ага, разработчик флэш-памяти ...: D
хм, причина в том, что сцена доступна только для объектов, которые есть в списке отображения ...
измените свой класс следующим образом:
package {
import flash.display.Sprite;
import flash.events.Event;
public class NewClass extends Sprite {
public function NewClass():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
trace(stage.width);//you may want to use stage.stageWidth actually
}
}
}
и Main :: init следующим образом:
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
var test:NewClass = new NewClass();
this.addChild(test);
}
о, и вы можете изменить Coding Style Type
с BraceAfterLine
на BraceOnLine
в Tools > Program Settings > FlashDevelop > Indenting
, на случай, если вы склонны ...;)
редактировать:
если вы хотите получить доступ к сцене, в рамках DisplayObject
, вы должны быть уверены, что сцена доступна для нее ... если вы хотите получить доступ к сцене как можно скорее, то вам понадобится хитрость при условии ... но если вы, например, получаете доступ к сцене в обработчике кликов, это автоматически подразумевает, что DisplayObject
находится в списке отображения ... иначе щелкнуть нельзя ...
небольшое замечание: я не думаю, что особенно разумно получить доступ к сцене из любого места ... когда дело доходит до отображения, иерархия вашего приложения должна следовать иерархии списка отображения, то есть доступ идет от корня вниз по ветви, а не наоборот ... это важно для достижения возможности повторного использования ...
Greetz
back2dos