0

我有几个组件,它们的屏幕位置取决于浏览器所在显示器的分辨率。

loginBox.x = (flash.system.Capabilities.screenResolutionX - loginBox.width) / 2; loginBox.y = (flash.system.Capabilities.screenResolutionY - loginBox.height) / 2;

我遇到的问题是 flash.system.Capabilities 方法会拉取连接到计算机的主监视器的分辨率。在大多数情况下,这不是问题,但在我的一台计算机上,我有一个 1680x1050 和一个 1440x900。在工作中,我有一个 1920x1200 和一个 1680x1050,所以如果我在较小的显示器上的浏览器中打开页面,事情不会居中,我的工具面板完全在屏幕右侧。

我有一个我尝试过的javascript块,无论是在html中还是通过php,但问题是如果我使用httpRequest或urlLoader来获取html文件,我会得到html的源代码,如果我尝试php脚本,我得到一个试图写入 cookie 的脚本块。如果在加载 Flash 站点之前没有访问过该页面,或者如果 cookie 被禁用,则它永远不会被写入,我无处可去。

有没有我可以使用的不依赖 cookie 的方法来检测浏览器实际所在的显示器的分辨率,而不仅仅是第一台显示器的分辨率?

4

2 回答 2

1

为什么不使用 stage.stageWidth 和 stage.stageHeight 进行定位?

编辑:好的,这是一个例子。我正在考虑将此代码放在 loginBox 所在的容器中。除非您的对象被添加到 DisplayList,否则 stage 属性是未定义的,因此您需要监听它何时被添加,然后定位 loginBox。

// in the constructor
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

进而

private function onAddedToStage(evt:Event) {
    loginBox.x = (stage.stageWidth - loginBox.width)/2;
    loginBox.y = (stage.stageHeight - loginBox.height)/2;
}

此外,如果您将舞台 scaleMode 设置为 noScale(可能是这种情况),如果您需要根据浏览器调整大小不断重新定位 loginBox,则需要监听 Event.RESIZE 事件

stage.addEventListener(Event.RESIZE, onResize);
于 2009-09-16T10:36:09.407 回答
0

如果您尝试在 flash 和 javascript 之间进行通信,ExternalInterface是您的最佳选择。与其编写 cookie,不如从 javascript 中获取信息,然后通过回调将其发送到 flash。

于 2009-09-16T00:12:06.457 回答