我试图在addChild之后跟踪子视图中的stage.name:
import flash.events.Event;
import flash.text.TextField;
public class TestView extends TextField {
public function TestView() {
addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);
}
private function handleAddedToStage(event : Event) : void {
this.text = "TEXT ON TEXTFIELD";
trace("Stage is"+stage.name);
trace("Stage width"+stage.stageWidth);
}
}
stage.name已被覆盖:在Main:
import flash.display.Sprite;
public class Main extends Sprite {
public function Main() {
addChild(new TestView());
}
override public function get name():String {
return "MAINSTAGE";
}
}
但是在日志中获取null: tail:flashlog.txt:文件被截断 舞台isnull
答案 0 :(得分:0)
我不明白为什么stage
会返回null
,但在name
类中覆盖Main
不会影响stage.name
属性。显示对象的stage
变量指向flash电影的全局唯一Stage
对象,该对象与Main
实例不同。在AS3中,有一个唯一的flash.display.Stage
实例,可以从当前显示列表中的任何显示对象访问(使用addChild
方法添加)。如果您想访问主Sprite
个实例,请改用displayObject.root
。
答案 1 :(得分:0)
您可以使用 Application.application.stage
从Flex应用程序内的任何位置访问舞台答案 2 :(得分:0)
不太清楚你要完成什么,但是通过我运行的快速测试,stage
不为空,但stage.name
为空。我正在使用Flex。这可能只是因为我们没有给它起个名字。
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:Button id="button"
addedToStage="trace(button.stage);trace(button.stage.name)"
click="trace(button.stage.name)"
horizontalCenter="0" verticalCenter="0"/>
</s:Application>
输出:
[object Stage]
null
null
在Main中覆盖get name
不会影响此。