MAC OS X + stage.fullScreenSourceRect + renderMode设置为GPU =错误的鼠标位置

时间:2013-01-24 14:45:28

标签: actionscript-3 flash air flash-builder

将stage.fullScreenSourceRect,stage.displayState设置为StageDisplayState.FULL_SCREEN_INTERACTIVE时;并且renderMode到GPU,鼠标位置读取不正确。这不仅适用于mouseX和mouseY位置,而且所有与Sprite,Buttons等的鼠标交互都无法正常工作。

有人知道这个问题的解决方案吗?

我在bugbase.adobe.com报告了一个错误,但目前还没有回复。

错误ID:3486120

附有简单的示例项目。如果您也遇到此问题并且您不知道任何解决方法,请至少投票支持该错误。

感谢。 格雷格。

1 个答案:

答案 0 :(得分:0)

有趣的错误。我想你可以通过在全屏时自己缩放和定位内容来解决这个问题。与设置fullScreenSourceRect相比,这可能会影响性能,但至少应该有效。

示例(在文档类中使用):

protected var fakeFullScreenSourceRect:Rectangle;

public function Main() {
    this.stage.scaleMode = StageScaleMode.NO_SCALE;
    this.fakeFullScreenSourceRect = new Rectangle(30, 30, 400, 200);
    this.stage.addEventListener(Event.RESIZE, handleResize);
}

protected function handleResize(e:Event):void {
    if (this.stage.displayState == StageDisplayState.FULL_SCREEN || this.stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE) {
        if (this.fakeFullScreenSourceRect) {
            this.scaleX = this.stage.stageWidth / this.fakeFullScreenSourceRect.width;
            this.scaleY = this.stage.stageHeight / this.fakeFullScreenSourceRect.height;
            this.x = -this.fakeFullScreenSourceRect.x * this.scaleX;
            this.y = -this.fakeFullScreenSourceRect.y * this.scaleY;
        }
    } else {
        this.x = this.y = 0;
        this.scaleX = this.scaleY = 1;
    }
}