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

Kadmus 13.01.2012 06:56

Как передать в обьект прямую ссылку на массив других обьектов?
 
Хочу выровнять масив обьектов относительно обьекта другого класса
Вот то что у меня есть. Ошибок нету но эфекта почти никакого

Код фрэйма
Код AS3:

var MyDragElements:Array = new Array(); //масив который хочу выровнять по оси х
for(var i=0;i<30;i++) {
        MyDragElements[i] = new CDragElement(350,70,zahody[i]);
        addChild(MyDragElements[i]);
}
 
var MyGroupPlane:CGroupPlane = new CGroupPlane();//обьект относительно которого хочу выровнять
addChild(MyGroupPlane);
MyGroupPlane.x = 300;
MyGroupPlane.y = 100;
MyGroupPlane.groupObjects(MyDragElements);

кусок кода класса CGroupPlane
Код AS3:

public function groupObjects(arr:Array):void {
                        var w:Number = 0;
                        var h:Number = 0;
                        for(var i=0;i<arr.length;i++) {
                                if(w < arr[i].width) w = arr[i].width;
                                h += arr[i].height + 10;
                        }
                        addChild(plane);
                        plane.graphics.lineStyle(1,0x000000);
                        plane.graphics.beginFill(0xffffff);
                        plane.graphics.drawRoundRect(0,0,w+20,h,10);
 
                        for(i=0;i<arr.length;i++) {
                                arr.x = this.x + 10;// !!!
                        }
                }

Правильно ли я передал масив в функцию?

goodguy 13.01.2012 07:26

Цитата:

Правильно ли я передал масив в функцию?
да, правильно.

п.с. Но названия переменных и функций в ас3 приянто писать с маленькой буквы.
Я вообще сначала подумал что тут MyGroupPlane.groupObjects(MyDragElements); вызывается статическая функция класса, но посмотрев на название переменной, понял что нет.

Kadmus 13.01.2012 12:10

Но почему она не работает. Обратите внимание на строку с закоментированными знаками восклицания, почему она не работает?

maxkar 13.01.2012 12:19

Цитата:

Сообщение от Kadmus (Сообщение 1056556)
Но почему она не работает. Обратите внимание на строку с закоментированными знаками восклицания, почему она не работает?

Что значит не работает? Она самому массиву свойству x зачем-то 10 раз подряд присваивает одно и то же значение. Почему одного раза не достаточно и что там не устраивает - не понятно.

СлаваRa 13.01.2012 12:20

Код AS3:

arr.x = this.x + 10;

где arr - массив, какой Вы ожидаете результат от изменения arr.x ?

Inet_PC 13.01.2012 12:28

наверное
Код AS3:

ar[i].x

при условии, что там объекты, имеющие свойство 'х', например наследники DisplayObject. А у массива, как уже было сказано этого свойства нет.

Vektor 13.01.2012 13:13

Код AS3:

for (var i = 0; i < aItem.length-1; i++) {
        aItem[i].x = aCoord[i].x + container.x;
        aItem[i].y = aCoord[i].y + container.y;
}

aCoord[i]- Содержит ваши координаты.
aItem[i] -Клипы которые надо разместить по этим координатам.
container - Можно привязать координаты к контейнеру на сцене, передвинув container вы передвинете и Клипы(aItem[i]).

Kadmus 13.01.2012 20:22

))Извините за потраченное время, я понял что я лажонулся)). Я зыбыл про индекс))


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

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