luwei
16-07-2010 07:49:49
Who can gave me some methods to use HikariWidget (Flash Plugin) playing Flash? Thankyou!
luwei
16-07-2010 07:49:49
shaolin
22-08-2010 11:44:41
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