欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Flash Player 11.3中使用全屏交互和鼠标锁定功能 [

程序员文章站 2022-07-13 22:38:17
...

全屏交互功能:

Flash Player 11.3(目前为beta版本 labs.adobe.com)有一新功能,允许应用在全屏模式下使用全键盘输入。

要使用此全屏交互新功能,你必须先在HTML嵌入代码中设置“allowFullscreenInteractive =true”的变量值。接着,在ActionScript中对显示状态进行正确设置, stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;,以保证应用能够接入全屏交互模式。关于此模式的正确呈现:用户需要先点击“allow”才能进入全屏交互模式。它长这样:

Flash Player 11.3中使用全屏交互和鼠标锁定功能 [
            
    
    博客分类: Flash Player  

开发者可以为此新特性进行监听,通过FullScreenEvent.FULL_SCREEN_INTERACTIVE_ACCEPTED事件能够知晓用户点击allow按钮。




鼠标锁定功能
Flash Player 11.2以及后续版本支持鼠标锁定功能。仅在全屏模式,你才能够开启鼠标锁定,stage.mouseLock = TRUE。11.3有个bug,将于11.4修正,而后我将对此11.3bug提出解决方案。正因为此功能只能在全屏模式下使用,所以为FullScreenEvent.FULL_SCREEN_INTERACTIVE_ACCEPTED事件的响应函数设置stage.mouseLock = TRUE变得至关重要,而这就是bug所在。假使你不在该响应函数里设stage.mouseLock = TRUE,那它将不会被正确设置,相当于一直保持false值。这就意味着你必须等待的若干时间后才能对其进行设置。在我github相关代码示例中,我添加一flag并监听MOUSE_MOVE来赋值stage.mouseLock = TRUE。以下为代码片段:

 

protected function mouseMoveHandler(event:MouseEvent):void
{
if (isFirstTime == true && stage.mouseLock == false)
{
isFirstTime = false;
errorMessage.text = "here: " + stage.mouseLock;
stage.mouseLock = true;
}
if (stage.mouseLock)
{
errorMessage.text = "here: " + event.movementX;
deltaX = event.movementX;
}
else
{
//deltaX = event.stageX - lastX;
//lastX = event.stageX;
}
}
protected function fullscreenHandler(event:FullScreenEvent):void
{
if (event.type == FullScreenEvent.FULL_SCREEN_INTERACTIVE_ACCEPTED)
{
isFirstTime = true;
//*****
//对Cyril(Flash Player 11.3)来说,这是个mouselock无法设为true的bug,
//解决办法是使用 isFirstTime接入,Flash Player 11.4将对此行为进行修正 
//*****
stage.mouseLock = true;
trace("["+event.type+"]Set mouse lock: " + stage.mouseLock);
errorMessage.text = "["+event.type+"]Set mouse lock: " + stage.mouseLock;
}
else
{
isFirstTime = false;
}
}
文章来源:http://bbs.wefdc.com/forum.php?mod=viewthread&tid=378&highlight=Flash%2BPlayer%2B11.3