Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с массивом. (http://www.flasher.ru/forum/showthread.php?t=185158)

says 06.10.2012 15:50

Проблема с массивом.
 
Здравствуйте ;)
Хочу заполнить поле кнопками,создал одну граф кнопку,далее запихал в цикл что бы произошло заполнение этими кнопками поля 10х10.
привожу свой простенький кодик
Код AS3:

package{
        import flash.display.MovieClip;
        //import flash.events.MouseEvent;
        //import flash.display.Sprite;
                public class Sap extends MovieClip{
                        private var btn:Btn;//кнопка
                        private var i:Number;//итератор цикла расставления кнопок
                        private var j:Number;//итератор цикла расставления кнопок
                        private var array1:Array;
                        private var array2:Array;
                        public function Saper():void{
                                stop();
                                var array1=new Array[i];
                                var array2=new Array[j];
                                for (i=0;array1.length<10;i++){
                                        for(j=0;array2.length<10;j++){
                                        btn = new Btn;
                                        addChild(btn);
                                        btn.x=10;
                                        btn.y=55;
                                        btn.width = 28;
                                        btn.height = 28;
                                        }
                                }
                        }
                }
}

при компиляции,вижу ошибку:

RangeError: Error #1005: Array index is not a positive integer (NaN).:rtfm:
at Error$/throwError()
at Array$iinit()
at Saper$iinit()

при этом массив заполняется одним объектом типа Button.

что я могу делать не так?:(

Jewelz 06.10.2012 15:57

ошибка тут:

Код AS3:

var array1=new Array[i];
var array2=new Array[j];

в момент создания массива i и j не определены (NaN)

попробуйте:
Код AS3:

var array1=[];
var array2=[];

также не увидел чтобы вы в массивы клали созданные кнопки

и лучше написать:
Код AS3:

for (i=0;i<10;i++){


says 06.10.2012 16:25

Код AS1/AS2:

package{
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
        import flash.display.Sprite;
        public class Saper extends MovieClip{
                private var btn:Btn;//кнопка
                private var i:Number;//итератор цикла расставления кнопок
                private var j:Number;//итератор цикла расставления кнопок
                private var array1:Array;
                //private var array2:Array;
                public function Saper():void{
                        stop();
                        Array_Use();
                        }
                public function Array_Use extends MovieClip():void{ // <=== здесь пишет 1084: Syntax error: expecting leftparen before extends.
                        var array1=new Array[i][j];
                        //var array2=new Array[j];
                        for (i=1;i<10;i++){
                                for(j=1;j<10;j++){
                                btn = new Btn;
                                addChild(btn);
                                btn.x=10;
                                x++;
                                btn.y=55;
                                y++;
                                btn.width = 28;
                                btn.height = 28;
                                }
                        }
                }
 
        }
}

теперь флэш хочет какую то скобку.

Добавлено через 3 минуты
Цитата:

Сообщение от Jewelz (Сообщение 1098743)
ошибка тут:

Код AS3:

var array1=new Array[i];
var array2=new Array[j];

в момент создания массива i и j не определены (NaN)

попробуйте:
Код AS3:

var array1=[];
var array2=[];

также не увидел чтобы вы в массивы клали созданные кнопки

и лучше написать:
Код AS3:

for (i=0;i<10;i++){


если
Код AS3:

var array1=[];
var array2=[];

получаем синтаксическую ошибку.

в цикле каждую итерацию я добавляю на сцену кнопку (btn).

Код AS3:

for (i=0;i<10;i++){

Здесь я подумал что цикл должен понимать с чем его связывают.

caseyryan 06.10.2012 16:36

Цитата:

получаем синтаксическую ошибку.
Какую именно?
За исключением предупреждения о том, что здесь не типизированные переменные, никакой ошибки быть не должно.

п.с. В ас3 массивы динамические. Не обязательно им сразу задавать размерность

says 06.10.2012 16:43

1084: Syntax error: expecting leftparen before extends.

udaaff 06.10.2012 17:01

Код AS3:

var array1=new Array[i][j];

Это что такое?

says 06.10.2012 17:06

это массив,двумерный.

Добавлено через 1 минуту
там в комментариях видно что я поначалу делал 2-а массива,но ошибка,которая там же в верхнем коде помечена,не прошла ,сделал 1-ин.

udaaff 06.10.2012 17:11

Код AS3:

var array:Array = [];
for (var i:int = 0; i < 10; i++)
{
    array[i] = [];
    for (var j:int = 0; j < 10; j++)
    {
        array[i][j] = ...
    }
}


caseyryan 06.10.2012 17:17

Цитата:

это массив,двумерный.
В ас3 нет двумерных массивов, как таковых. Есть массив массивов.
Такой способ инициализации не пройдет.
Как создать правильно udaaff уже показал

says 06.10.2012 17:23

понял,только ошибка
Код AS3:

public function Array_Use extends MovieClip():void{ // <=== здесь пишет 1084: Syntax error: expecting leftparen before extends.

Добавлено через 39 секунд
осталась...


Часовой пояс GMT +4, время: 13:47.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.