Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   addChild снова проблемы с логикой цикла (http://www.flasher.ru/forum/showthread.php?t=144193)

in4core 06.09.2010 01:34

addChild снова проблемы с логикой цикла
 
Код AS3:

var sp:Sprite = new Sprite();
                        addChild(sp);
 
                        var sh:Shape = new Shape();
                        sh.graphics.beginFill(0xFFFFFF);
                        sh.graphics.drawRect(0,0,20,20);
                        sh.graphics.endFill();
 
                        sp.addChild(sh);
 
                        var sh1:Shape = new Shape();
                        sh1.graphics.beginFill(0x000000);
                        sh1.graphics.drawRect(0,0,20,20);
                        sh1.graphics.endFill();
                        sh1.x = sh1.y = 20;
                        sp.addChild(sh1);
 
                        /*for (var i = 0; i< wi; i++) {
                                for (var j=0; j< he; j++) {
                                      ... // что то сдесь чтобы продублировать наш первый самый sp
                                        addChild(); // а внутри что то типа sp+i+j
 
                                }
                        }*/

Вот такой вопрос, суть в комментах. нужно продубоировать в цикле sp

alatar 06.09.2010 02:07

Все что у вас до цикла, перенесите в цикл.
Цитата:

а внутри что то типа sp+i+j
Числа с объектами не складываются :) только как строка.
Если нужно сохранить ссылки на множество объектов сложите их в массив.
Код AS3:

var objects:Array = [];
var sp:Sprite = new Sprite();
objects.push(sp);


in4core 06.09.2010 02:40

Не то вы сказали) ну перенису в цикл и что? как от i и j плясать то?))) ссылки не нужны

alatar 06.09.2010 02:43

куда вам надо от них плясать?

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

ну перенису в цикл и что?
а то что таким образом вы создадите i*j объектов и таким образом добъетесь
Цитата:

что то сдесь чтобы продублировать наш первый самый sp

spooner 06.09.2010 08:55

Все он правильно говорит.
Один раз создав объект, в список отображения его можно записать несколько раз, а по сему из начала вашего кода addChild(sp) убирайте и
Код AS3:

for (var i = 0; i< wi; i++) {
for (var j=0; j< he; j++) {
sp.x = i;
sp.y = j;
addChild(sp);
}
}

Это с учетом размещения в различных координатах, а так и надо будет, я думаю

Tr1te 06.09.2010 09:38

Ничего подобного, нужно обязательно создавать экземпляр класса в цикле, если вы хотите i*j копий своих циклов.

А с i,j связать просто, только зависит от того как вы хотите расположить эти объекты. Например если вам нужна матрица[i][j], то надо так:
Код AS3:

var XPos:int=0;
var YPos:int=0;
 
for (var i = 0; i< wi; i++) {
for (var j=0; j< he; j++) {
 
sp=new Sprite();
//Сюда надо вставить все что вы хотите вставить в спрайт (Shape'ы)
sp.x = XPos;
sp.y = YPos;
addChild(sp);
 
XPos+=sp.width; //тут надо все время прибавлять ширину вашего спрайта, Если
                      //фиксирована, то можете вписать число.
}
YPos+=sp.height;//Тут после заполнения строки мы переходим на новую строку.
                      //Также может быть числом.
XPos=0;//А это мы переходим в начало координат по столбцам.
}


iNils 06.09.2010 10:45

Цитата:

Сообщение от alatar (Сообщение 933713)
Все что у вас до цикла, перенесите в цикл.

Не обязательно. В 10-ом плеере у Graphics появился метод copyFrom, который:
Цитата:

Копирует все команды рисования исходного объекта Graphics в вызывающий объект Graphics.

samana 06.09.2010 10:46

Или если таки матрицу то i-рядов, j-столбцов

Код AS3:

for(var i=0;i<5;i++){
        for(var j=0;j<10;j++){
                var clip:Clip=new Clip();
                clip.x=clip.width*j;
                clip.y=clip.height*i;
                addChild(clip)
        }
}


alatar 06.09.2010 10:59

Цитата:

Сообщение от iNils (Сообщение 933739)
Не обязательно. В 10-ом плеере у Graphics появился метод copyFrom, который:

Так он сможет скопировать те два шейпа, которые у него в спрайте. Спрайт прийдется создавать заново и ложить в него копии шейпов.

iNils 06.09.2010 11:03

Спрайт придется. Но ... я его не увидел, потому что некоторым лень убрать лишнею табуляцию перед вставкой на форум.


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

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