Actionscript:如何在添加的孩子中获得舞台属性?

时间:2010-02-19 00:32:29

标签: flex actionscript

我试图在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

3 个答案:

答案 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不会影响此。