Форум 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=185943)

says 24.10.2012 21:30

исключения одинаковых координат объекта
 
Двс.
Имеются обекты,координаты которых записаны в массив поочередно,примерно так
arr[x,y,x,y,x,y....]
что хочу сделать я.
Если 2-е пары координат одинаковые,я делаю релог цикла.

Код AS3:

while(arr_mine[a+b] = arr_mine[a+c] && arr_mine[a+d] = arr_mine[a+k]){//d = 0,2,4,6,8 c = 1,3,5,7,9
                                continue;
                                b=d+2;//эти переменные для x
                                c=c+1;//эта переменная для y
                                d=d+4;//для второй х
                                k=k+3;//для второй у
                                }

это очень упрощенный вариант кода.
как то так выглядит цикл,пишет что я глупый :(

caseyryan 24.10.2012 21:53

Есть вариант использовать Array#filter() для проверки наличия совпадений

says 24.10.2012 22:44

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

вот код

Код AS3:

package{
        import flash.events.MouseEvent;
        import flash.display.MovieClip;
        import flash.display.Sprite;
        //import flash.text.TextField;
        //import flash.utils.getTimer;
 
                public class Saper extends Sprite {
                private var n:uint=0;
                private var m:int= 0;
                private var k:int = 0;
                private var arr_btn:Array = new Array(); //координаты кнопок
                private var arr_mine:Array = new Array(); //координаты мин
                private var mine:Mine = new Mine();//переменная мина
                private var a:uint = 0;
                private var ax:uint = 0; //перемення для цикла в исключениях
                private var bx:uint = 2;
                private var cx:uint = 1;
                private var dx:uint=3;
 
 
                        public function Saper(){
                                for (var i:int = 0 ; i<10;i++){
                                        n=0;
                                        for(var j:int =0; j<10;j++){
                                                var btn:Btn = new Btn();
                                                addChild(btn);
 
                                                btn.x = n;
                                                btn.y= m;
                                                arr_btn.push(btn);
                                                btn.addEventListener(MouseEvent.CLICK,func_click);
                                                n+=30;
                                        }
                                        m+=30;
 
                                }
                                trace(arr_btn);
 
                                for(var k:int=0;k<10;k++){
                                        var mine = new Mine();
                                        addChild(mine);
                                        n= 30*Math.floor(Math.random()*10);
                                        m = 30*Math.floor(Math.random()*10);
                                        n = n - n % 30;
                                        m = m - m % 30;
                                        trace(n);
                                        trace(m);
                                        mine.x=n;
                                        mine.y=m;
                                        arr_mine.push(n,m);
                                        trace(arr_mine);
                                        setChildIndex(mine,0);//завернул мини вниз
                                        while(arr_mine[a+ax] == arr_mine[a+bx] && arr_mine[a+cx]  == arr_mine[a+3]){ <+++++++ вот этот цикл не работает
                                                k--;
                                                break;
                                        }
                                        ax=ax+2;
                                        bx=bx+2;
                                        cx=cx+2;
                                        dx=dx+2;
                                }
 
 
                                }
                        }
                        private function func_click (e:MouseEvent):void{ //
                        var btn:Btn = e.currentTarget as Btn;
                                if (btn){
                                        removeChild(btn);
                                }
 
                        }
                }
}

Не могу разобраться...без цикла while всё прекрасно работает...

Вид ошибки:1013: The private attribute may be used only on class property definitions. в транслейт залил так и не понял..

Добавлено через 32 минуты
решил проблему

Krusty 24.10.2012 23:19

Вы налажали со скобками {}. private function func_click сейчас вне определения класса.

says 30.10.2012 18:37

Да дело не в этом...Почему у меня не получается завести цикл с условиями уменьшением иттератора внешнего цикла while и увелечения позиции элементов массива сравнения


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

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