Php 如何使用Actionscript可靠地捕获屏幕分辨率?

Php 如何使用Actionscript可靠地捕获屏幕分辨率?,php,javascript,actionscript,monitor,resolution,Php,Javascript,Actionscript,Monitor,Resolution,我有几个组件,它们的屏幕位置取决于浏览器所在显示器的分辨率 loginBox.x=(flash.system.Capabilities.screenResolutionX-loginBox.width)/2; loginBox.y=(flash.system.Capabilities.screenResolutionY-loginBox.height)/2 我遇到的问题是flash.system.Capabilities方法会影响连接到计算机的主监视器的分辨率。在大多数情况下,这不是问题,但在我

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

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,则该页面将永远不会被写入,我也将一事无成


是否有一种不依赖cookies的方法可以用来检测浏览器实际所在的监视器的分辨率,而不仅仅是第一个监视器的分辨率?

如果您试图在flash和javascript之间进行通信,这是一种方法。与其编写cookie,不如从javascript获取信息,并通过回调将其发送到flash。

为什么不使用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;
}
此外,如果将stage scaleMode设置为noScale(可能是这种情况),如果需要根据浏览器大小不断重新定位loginBox,则需要侦听Event.RESIZE事件

stage.addEventListener(Event.RESIZE, onResize);

我不知道为什么,但我讨厌JavaScript,并尽可能避免使用它。我检查了我的密码,让stage.stageHeight开始工作。某种程度上。我收到无效属性或方法的错误消息,因此我添加了以下内容:重写受保护的函数updateDisplayList(unscaledWidth:Number,UnscaledHight:Number):void{super.updateDisplayList(unscaledWidth,UnscaledHight);myStageWidth=unscaledWidth;mystageHight=UnscaledHight;}我必须在我的桌面上试试,看看是否一切都好了。在进入舞台之前,必须将它添加到显示列表中。您必须首先收听Event.ADDED_至_阶段。在调度Event.ADDED_TO_STAGE时激发的方法内部,您可以使用STAGE.stageWidth;否则您将得到一个错误。一个常见的解决方法是检查构造函数中的stage,如果您无法访问它,或者它为null,则侦听Event.ADDED_to_stage,这两种方法都会导致init函数。if(stage)_init();else addEventListener(Event.ADDED_至_阶段,_init);私有函数_init(e:Event=null):void{//您现在可以访问stage}我的结构的一部分通过使用SWFLoader加载了一个应用程序。我发现这个子应用程序检测到宽度为1440,但高度为802。我猜这与工具栏有关。该应用程序本身也加载了一个游戏演示,但这个应用程序检测到宽度为500,因为它的容器没有指定尺寸。我开始让主应用程序使用LocalConnection进行检查并分发号码,但最后,我使用了一个共享对象,并根据需要设置其他两个应用程序来访问它。