2010-02-19 81 views
0

我想以後的addChild追查在子視圖stage.name:Actionscript:如何獲取添加的孩子的階段屬性?

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已經overrided:在主營:

import flash.display.Sprite; 
public class Main extends Sprite { 
    public function Main() { 
     addChild(new TestView()); 
    } 
    override public function get name():String { 
     return "MAINSTAGE"; 
    } 
} 

但在日誌中獲得零: 尾:FLASHLOG .TXT:文件截斷 舞臺ISNULL

回答

0

我不明白爲什麼stage回報null,但壓倒一切的nameMain類將不會影響stage.name屬性。顯示對象的stage變量指向閃存電影的全局唯一Stage對象,該對象與Main實例不同。在AS3中,有一個獨特的flash.display.Stage實例,它可以從當前位於顯示列表中的任何顯示對象訪問(使用addChild方法添加)。如果您想訪問主要的Sprite實例,請改爲使用displayObject.root

0

您可以從任何地方訪問階段Flex應用程序中使用Application.application.stage

0

不上你要完成的相當清楚,但快速測試我跑,stage不爲空,但是stage.name null。我正在使用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 

重寫主get name不會影響這一點。

相關問題