关于stage的讨论
stage在flash常被乱用,而且经常出现stage为null的情况,这种情况基本是在一个类去调用另外一个类,在被调用的类中使用了stage,这个时候很容易出现null的情况。
stage是顶级显示对象,root是二级显示对象。
所以在AS3中所有调用的类中只有主类能够使用stage,如我们常在使用loading完成后才会去调用我们的主swf文件,下面是我常用个的 loading。
package {
import flash.net.*;
import flash.system.System;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.geom.*;
import caurina.transitions.Tweener;
public class index extends MovieClip {
var loadingText:TextField=new TextField();
var loadformat:TextFormat=new TextFormat();
public function index() {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align="TL";
loadformat.font="Verdana";
loadformat.color = 0xffffff;
loadformat.size = 14;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align="TL";
var request:URLRequest = new URLRequest("activity.swf");
var loader:Loader = new Loader();
loader.load(request);
addChild(loader);
loadingText.x=stage.stageWidth/2;
loadingText.y=stage.stageHeight/2+40;
loadingText.name="loadingText";
loadingText.autoSize=TextFieldAutoSize.LEFT;
addChild(loadingText);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
}
function loadProgress(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
percentLoaded = Math.round(percentLoaded * 100);
loadingText.text="Loading: "+percentLoaded+"%";
loadingText.setTextFormat(loadformat);
trace("Loading: "+percentLoaded+"%");
}
function loadComplete(event:Event):void {
removeChild(getChildByName("loadingText"));
}
}
}
从中可以看到,在这个中间用到了stage,那么在load的主flash中就不能使用stage了。
我的网站设计 web design home page
[url]http://www.webdesign-cn.com[/url]
[url]http://www.webdesign-china.cn[/url]
stage是顶级显示对象,root是二级显示对象。
所以在AS3中所有调用的类中只有主类能够使用stage,如我们常在使用loading完成后才会去调用我们的主swf文件,下面是我常用个的 loading。
package {
import flash.net.*;
import flash.system.System;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.geom.*;
import caurina.transitions.Tweener;
public class index extends MovieClip {
var loadingText:TextField=new TextField();
var loadformat:TextFormat=new TextFormat();
public function index() {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align="TL";
loadformat.font="Verdana";
loadformat.color = 0xffffff;
loadformat.size = 14;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align="TL";
var request:URLRequest = new URLRequest("activity.swf");
var loader:Loader = new Loader();
loader.load(request);
addChild(loader);
loadingText.x=stage.stageWidth/2;
loadingText.y=stage.stageHeight/2+40;
loadingText.name="loadingText";
loadingText.autoSize=TextFieldAutoSize.LEFT;
addChild(loadingText);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
}
function loadProgress(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
percentLoaded = Math.round(percentLoaded * 100);
loadingText.text="Loading: "+percentLoaded+"%";
loadingText.setTextFormat(loadformat);
trace("Loading: "+percentLoaded+"%");
}
function loadComplete(event:Event):void {
removeChild(getChildByName("loadingText"));
}
}
}
从中可以看到,在这个中间用到了stage,那么在load的主flash中就不能使用stage了。
我的网站设计 web design home page
[url]http://www.webdesign-cn.com[/url]
[url]http://www.webdesign-china.cn[/url]