为什么我把一些例子用的代码写成一个类,却无法正确调用
打算把以前的例子合成一个项目
却发现一些代码无法使用
以下是例子之一,如果直接用FLASH AS调用还行,新建一个类调用就不行了,提示指向空对象求解
- Java code
package{ import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.events.Event; import flash.events.KeyboardEvent; public class debug10 extends MovieClip { public function debug10() { var inputFormat:TextFormat=new TextFormat();//创建字体类型 inputFormat.font='宋体';//设置字体 inputFormat.size=12;//设置字号 var mylnput:TextField=new TextField();//创建文本框 mylnput.type=TextFieldType.INPUT; mylnput.defaultTextFormat=inputFormat; mylnput.x=10; mylnput.y=10; mylnput.height=18; mylnput.width=200; mylnput.border=true; addChild(mylnput); stage.focus=mylnput;//让系统的光标直接出现在这个文本框里,即不用再点击就能输入文字 mylnput.addEventListener(KeyboardEvent.KEY_UP,checkForReturn);//侦听 function checkForReturn(event:KeyboardEvent) { if(event.charCode==13) { acceptlnput(); stage.focus=null;//取消光标指向mylnput,自行添加 } } function acceptlnput()//文本输出 { var thelnputText:String=mylnput.text;//将文本框内的文字赋予一个字符串 trace(thelnputText);//输出文本 removeChild(mylnput);//删除文本框 } } }}[解决办法]
这种情况,一般是由于实例还没有添加到显示列表,导致stage属性为空所致。你将涉及到显示对象的操作放到Event.ADDED_TO_STAGE事件处理程序中就可以了。另外你的代码有些其它方面的问题。试着修改了一下,供参考:
- JScript code
package{ import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.events.Event; import flash.events.KeyboardEvent; public class debug10 extends MovieClip { private var mylnput:TextField; public function debug10() { addEventListener(Event.ADDED_TO_STAGE,onAddedToStage); } private function onAddedToStage(e:Event):void{ var inputFormat:TextFormat=new TextFormat();//创建字体类型 inputFormat.font='宋体';//设置字体 inputFormat.size=12;//设置字号 mylnput=new TextField();//创建文本框 mylnput.type=TextFieldType.INPUT; mylnput.defaultTextFormat=inputFormat; mylnput.x=10; mylnput.y=10; mylnput.height=18; mylnput.width=200; mylnput.border=true; addChild(mylnput); stage.focus=mylnput;//让系统的光标直接出现在这个文本框里,即不用再点击就能输入文字 mylnput.addEventListener(KeyboardEvent.KEY_UP,checkForReturn);//侦听 } function checkForReturn(event:KeyboardEvent) { if(event.charCode==13) { acceptlnput(); stage.focus=null;//取消光标指向mylnput,自行添加 } } function acceptlnput()//文本输出 { var thelnputText:String=mylnput.text;//将文本框内的文字赋予一个字符串 trace(thelnputText);//输出文本 removeChild(mylnput);//删除文本框 } }}