Play Flash

luwei

16-07-2010 07:49:49

Who can gave me some methods to use HikariWidget (Flash Plugin) playing Flash? Thankyou!

shaolin

22-08-2010 11:44:41

Try something like this. I don't use Hikari anymore and I don't know if it's 1.7 compatible. Please use this as a guideline only.

class App
{
...

std::auto_ptr<Hikari::HikariManager> _hikariMgr;
Hikari::FlashControl *_flashControlFps, *_flashControlTransparency, *_flashControlClock;

void setupHikari();

Hikari::FlashValue onOpacityChange(Hikari::FlashControl* caller, const Hikari::Arguments& args);
Hikari::FlashValue onColorChange(Hikari::FlashControl* caller, const Hikari::Arguments& args);
Hikari::FlashValue onExitClick(Hikari::FlashControl* caller, const Hikari::Arguments& args);
Hikari::FlashValue onDrawMode(Hikari::FlashControl* caller, const Hikari::Arguments& args);

void actionShowHideHikari(int i, float f);

...
};


void App::setupHikari()
{
_hikariMgr.reset(new Hikari::HikariManager("..\\media"));

Viewport* vp = _camera->getViewport();
_flashControlFps = _hikariMgr->createFlashOverlay("FPS", vp, 130, 91, Hikari::Position(Hikari::BottomLeft));
_flashControlFps->load("fps.swf");
_flashControlFps->setTransparent(true);
_flashControlFps->setDraggable(false);

_flashControlTransparency = _hikariMgr->createFlashOverlay("Controls", vp, 350, 400, Hikari::Position(Hikari::TopRight));
_flashControlTransparency->load("controls.swf");
_flashControlTransparency->setTransparent(true, true);
_flashControlTransparency->bind("opacityChange", Hikari::FlashDelegate(this, &App::onOpacityChange));
_flashControlTransparency->bind("colorChange", Hikari::FlashDelegate(this, &App::onColorChange));
_flashControlTransparency->bind("exitClick", Hikari::FlashDelegate(this, &App::onExitClick));
_flashControlTransparency->hide();

_flashControlClock = _hikariMgr->createFlashOverlay("Clock", vp, 100, 50, Hikari::Position(Hikari::TopRight));
_flashControlClock->load("Clock.swf");
_flashControlClock->setTransparent(true, true);
_flashControlClock->bind("onExit", Hikari::FlashDelegate(this, &App::onExitClick));
_flashControlClock->bind("onDrawMode", Hikari::FlashDelegate(this, &App::onDrawMode));
}

Hikari::FlashValue App::onOpacityChange(Hikari::FlashControl* caller, const Hikari::Arguments& args)
{
Real opacityPercent = args.at(0).getNumber();

caller->setOpacity(opacityPercent / 100);

return FLASH_VOID;
}

Hikari::FlashValue App::onColorChange(Hikari::FlashControl* caller, const Hikari::Arguments& args)
{
ColourValue color = args.at(0).getNumberAsColor();

_camera->getViewport()->setBackgroundColour(color);

return FLASH_VOID;
}

Hikari::FlashValue App::onExitClick(Hikari::FlashControl* caller, const Hikari::Arguments& args)
{
_needToShutDown = true;

return FLASH_VOID;
}

Hikari::FlashValue App::onDrawMode(Hikari::FlashControl* caller, const Hikari::Arguments& args)
{
_renderModeIndex = (_renderModeIndex+1)%3 ;
switch(_renderModeIndex)
{
case 0:
_camera->setPolygonMode(PM_SOLID);
_debugText = "Rendering Mode: Solid";
break;
case 1:
_camera->setPolygonMode(PM_WIREFRAME);
_debugText = "Rendering Mode: Wireframe";
break;
case 2:
_camera->setPolygonMode(PM_POINTS);
_debugText = "Rendering Mode: Point";
break;
}

return FLASH_VOID;
}

void App::actionShowHideHikari()
{
_showGUI != _showGUI;
if(_showGUI)
{
_flashControlTransparency->show();
}
else
{
_flashControlTransparency->hide();
}
}

bool App::frameStarted(const FrameEvent& evt)
{
_hikariMgr->update();

const RenderTarget::FrameStats& stats = _window->getStatistics();
_flashControlFps->callFunction("setFPS", Hikari::Args((int)stats.lastFPS));

return true;
}

bool App::mouseMoved(const OIS::MouseEvent &arg)
{
if(_mouseVisible)
_hikariMgr->injectMouseMove(arg.state.X.abs, arg.state.Y.abs) || _hikariMgr->injectMouseWheel(arg.state.Z.rel);

return true;
}

bool App::mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id)
{
if(_mouseVisible)
_hikariMgr->injectMouseDown(id);

return true;
}

bool App::mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id)
{
if(_mouseVisible)
_hikariMgr->injectMouseUp(id);

return true;
}

luwei

25-08-2010 03:28:02

Thank you!