我该如何解决这个错误的错误

时间:2010-09-16 19:52:04

标签: flex flash actionscript-3 oop class

如你所见,这是一个类创建4个文本字段,我在woona做的是这行代码                               first1 [i] .text = k1 [i]; 在for循环中写入TextFields中的随机数

这是我的代码

import flash.display.Sprite;
            import flash.display.DisplayObjectContainer;
        import flash.display.InteractiveObject;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import flash.events.MouseEvent;
        import flash.events.KeyboardEvent;

    public class addClass  extends Sprite {
                        public var first1:Array = new Array();
                                public var i:uint;
                               public var k1:Array = new Array();

                 public function addClass() {
                       for (i= 1 ; i<= 5; i++)
        {       first1[i]= createCustomTextField(100,(i*40),50,30);
                            k1[i]=Math.round(Math.random()*10);
                    // here is the problem
                       first1[i].text = k1[i];
               }


                 private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField
               {
                var result:TextField=new TextField  ;
                var format:TextFormat = new TextFormat();
                result.x=x;
                result.y=y;
                result.width=width;
                result.height=height;
                result.background=false;
                result.border=true;
                result.selectable=false;
                result.restrict="0-9";
                format.size = 24; 
                format.color = 0xFFFFFF;
                result.defaultTextFormat = format;
                addChild(result);
                return result;
                }

3 个答案:

答案 0 :(得分:1)

你有什么问题?编译或运行时错误?如果是这样,你收到了什么错误?我的第一个猜测是你需要将你的引用转换为你的文本字段,如下所示:

(first1[i] as TextField).text = k1[i];

我在您的代码中看到的另一个问题是您在构造函数中将子项添加到您的sprite中。这可能会有问题,因为你不应该在生命周期的后期添加孩子。

答案 1 :(得分:0)

 for (i= 1 ; i<= 5; i++)

这个你正在使用的for循环似乎不适合生成四个文本字段。我想你想要:

 for (i= 0 ; i< 5; i++)

同样,韦德建议您也可以确保返回的文本框正确地转换为数组元素。

答案 2 :(得分:0)

无法重现错误。这段代码正在运行,问题可能在其他地方。如果有的话,你应该这样做:

first1[i].text = k1[i].toString();

但它仍然有效。此外,是的,你正在创建5个盒子。不是4