Adobe Flash является одной из самых популярных и широко используемых платформ для приложений с графическим интерфейсом, интернет-приложений и игр на мобильных устройствах. Samsung Бада обеспечивает отличную поддержку Flash с FlashLite 3.1.6 (эквивалентно Flash 9, ActionScript 2,0). bada Flash control – это UI управление, которое позволяет программистам Flash приложений легко портировать Flash приложения на bada с минимальными усилиями.
Использование Flash в приложениях bada
Добавление и проигрывание flash в bada простое. Здесь, шаг-за-шагом, всё описано:
Создайте flash управление с вашим .swf файлом
Добавьте его к форме
Нарисуйте и отобразите форму
Установите параметры конфигурации, как требуется (Включите/Выключите звуки, установите режим повторения) и т.д.
Вызовите метод управления flash – Play (), чтобы запустить контент
Вызовите Pause () или Stop (), чтобы приостановить или остановить контент
Образец ниже проигрывает sample.swf . Устанавливая repeatMode (FLASH_REPEAT_NONE), Flash циклически неограничен.
Flash* pFlash = new Flash();
Rectangle rect(0,100,480,400);
r = pFlash->Construct(rect, FLASH_STYLE_PLAY_WITHOUT_FOCUS,
L"/Res/sample.swf");
/* __pFlash->Construct(Rectangle(10, 10, 450, 500), FLASH_STYLE_PLAY_WITHOUT_FOCUS, L”/Res/sample.swf”, L"http://{Server URL}/{Flash Contents File}"); */
r = AddControl(*pFlash);
pFlash->SetQuality(FLASH_QUALITY_HIGH);
pFlash->SetRepeatMode(FLASH_REPEAT_NONE);
pFlash->SetSoundEnabled(true);
pFlash->AddFlashEventListener(*pListener);
Draw();
Show();
pFlash->Play();
События на Flash экране прямо получаются в Flash контент. Так, приложения Flash, которые ожидают сенсорные события, не должны волноваться о помещении никакой логики в bada приложении. Это работает без дополнительных усилий. Однако пользователь должен добавить логику, чтобы передать данные между bada приложением (с управлением Flash) и Flash. (например, собирая ввод клавиатуры).
Как Flash взаимодействует с bada Flash приложениямиСвязь между Flash и bada приложениями может быть выполнена, используя вызовы fscommand2. Приложение должно следовать Бада API для облегчения передачи.
Реализуйте интерфейс IFlashEventListener в bada приложение, чтобы получить команды, отправленные через fscommad2.
Запросы установки (Set и SetVars) от fscommand2 получены через обработчик событийOnFlashDataReceived ().
Запросы получения (Get and GetVars) от fscommand2 получены через обработчик событий OnFlashDataReturned ()
Чтобы отослать данные назад к Flash, может использоваться SendDataToActionScript ().
См. пример ниже для реализации слушателя события.
void FlashForm::OnFlashDataReturned(const Osp::Ui::Control& source,
const Osp::Base::Collection::IList& paramList)
{
ArrayList params;
String* pReceivedMethod;
params.Construct();
params.AddItems(paramList);
pReceivedMethod = static_cast<String*> (params.GetAt(0));
if(pReceivedMethod->Equals("GetDate",true))
{
/*
* FSCommand2("Get","GetDate", date);
*/
// Get todayTime info from system
__pFlash->SendDataToActionScript(todayTime);
}
else if(pReceivedMethod->Equals("GetDimension",true))
{
/*
* FSCommand2("GetVars","SetDimension", Dimension);
*/
// Send the dimension data to flash.
// dimensionData : "width=value1&height=value2", '&' -> data separator
dimensionData = "width=" + widthData + "&" + "height=" + heightData;
__pFlash->SendDataToActionScript(dimensionData);
}
}
void FlashForm::OnFlashDataReceived(const Osp::Ui::Control& source,
const Osp::Base::Collection::IList& paramList)
{
ArrayList params;
String* pReceivedMethod;
String* pReceivedDataValue;
params.Construct();
params.AddItems(paramList);
pReceivedMethod = static_cast<String*> (paramList->GetAt(0));
pReceivedDataValue = static_cast<String*> (paramList->GetAt(1));
if(pReceivedMethod->Equals("SetDate",true))
{
/*
* FSCommand2("Set","SetDate", date);
*/
// Get the received date value
message = *pReceivedDataValue;
}
else if(pReceivedMethod->Equals("SetDimension",true))
{
/*
* FSCommand2("SetVars","SetDimension", dimension);
*/
// Get the received dimension value
// Message : "width=value1&height=value2", '&' -> data separator
message = *pReceivedDataValue;
}
}
В вышеупомянутых обработчиках событий Вы можете видеть, что pReceivedMethod содержит методы установки и получения, в то время как pReceivedDataValue содержит данные, передаваемые использованием fscommand2.
Вот пример, который использует SendDataEventToActionScript ().
Вы можете вызвать метод SendDataEventToActionScript () так, чтобы Вы могли отправить ActionEvent Flash.
void FlashForm::OnFlashDataReceived (const Osp::Ui::Control &source,
const Osp::Base::Collection::IList ¶mList)
{
ArrayList params;
ArrayList dataList;
String* pReceivedMethod;
params.Construct();
params.AddItems(paramList);
pReceivedMethod = static_cast<String*> (params.GetAt(0));
if(pReceivedMethod->Equals("SendDataEvent",true))
{
/* FSCommand2("Set","SendDataEvent", "/");
* Comment : "/" is nothing to do with an action, dummy parameter.
*
* OnMenuItemChanged = new Object();
* OnMenuItemChanged.onEvent = function(arg1, arg2) {
* txtMenu.text = arg1;
* txtNum.text = arg2;
* };
* ExtendedEvents.ItemChanged.addListener(OnMenuItemChanged);
*
* Usage : ExtendedEvents.[UserDefinedEventHandler].addListener(UserDefineEvent)
*/
// Construct a DataList, sending to flash
// Send data lists to flash
__pFlash->SendDataEventToActionScript("ItemChanged",dataList);
}
}
В приведенном выше примере, ItemChanged это событие и DataList содержит данных для передачи, которые могут быть получены через ExtendedEvents. [UserdefinedEventHandler] в Flash.
Обработчик событий вызывается через UserDefineEventHandler.
Flash в bada APIbada API Reference > Namespace List > Osp::Ui > Osp::Ui::Controls > Osp::Ui::Controls::Flash
bada API Reference > Namespace List > Osp::Ui > Osp::Ui::IFlashEventListener