读书人

为什么小弟我把一些例子用的代码写成一

发布时间: 2012-03-11 18:15:39 作者: rapoo

为什么我把一些例子用的代码写成一个类,却无法正确调用
打算把以前的例子合成一个项目
却发现一些代码无法使用
以下是例子之一,如果直接用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);//删除文本框        }    }} 

读书人网 >Flash

热点推荐