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

Nemez 12.11.2010 01:26

Различные значения переменной класса в его объектах
 
Привет. Вопрос скорее из ООП, наверное.
Есть класс Kaufer (Мувиклип). У него переменная
Код AS1/AS2:

public var ziziele:Array;

В разное время вывожу на сцену экземпляры этого класса
Код AS1/AS2:

var kaufer:Kaufer = new Kaufer();

и вычисляю для них для всех разные kaufer.ziziele.
Но получаю изменение во всех одновременно. В то же время имеют же они, например, разные x и y, которые считаются отдельно для каждого kaufer.
Явно подозреваю, что дело в паблик, приват и прочих ООП, но из.за недостатка образования...
Итак, что делать, чтобы kaufer.ziziele было разным для разных kaufer?

bav 12.11.2010 01:54

Код AS3:

// Main.as
package
{
        import flash.display.Sprite;
        import flash.events.Event;
        import Kaufer;
        /**
        * @author bav
        */

        public class Main extends Sprite
        {
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
                private function init(e:Event = null):void
                {
                        var k1:Kaufer = new Kaufer();
                        var k2:Kaufer = new Kaufer();
 
                        k1.ziziele = [1, 2];
                        k2.ziziele = [3, 4];
 
                        trace(k1.ziziele); // 1,2
                        trace(k2.ziziele); // 3,4
                }
        }
}
 
// Kaufer.as
package 
{
        import flash.display.MovieClip;
        public class Kaufer extends MovieClip
        {
                public var ziziele:Array;
                public function Kaufer() { }
        }
}

Покажите, как вы вычисляете для них для всех разные kaufer.ziziele.

Nemez 12.11.2010 02:18

Так понятно. Но по условию задачи у меня все экземпляры имеют одно имя.
Код AS1/AS2:

public function kauferLoss():void
{
var kaufer:Kaufer = new Kaufer();
kaufer.x = 550;
kaufer.y = 100;
addChild(kaufer);                                                                 
kaufer.addEventListener(Event.ENTER_FRAME, bewegung);
}

А дальше они бегают по-отдельности по своим законам.
Я могу, конечно, создать массив, засунуть их туда и сделать, как у Вас, но возможен ли путь с одним именем?

bav 12.11.2010 11:12

Нет, экземпляры должны различаться по именам. Как же иначе программа поймет свойства какого именно экземпляра вы хотите изменить? Если у нас есть десять Ванек, и крикнуть "Ванька!", наверняка обернутся все разом.
Ну и да, можно сделать примерно следующее, чтобы обращаться затем к экземплярам через индексы массива.
Код AS3:

var ivanContainer:Array = [];
for (var i:int = 0; i < 10; i++)
{
    ivanContainer.push(new Ivan());
}


cleptoman 12.11.2010 12:11

вы не путайте имя с ссылкой на объект

по поводу свойства - вы передаете в каждый новый мувик ссылку на один и тот же массив, скорее всего и меняете его значения. передавайте ссылки для каждого мувика на свой массив.

примерно так:

Код AS3:

var kaufer:Kaufer = new Kaufer();
kaufer.x = 550;
kaufer.y = 100;
kaufer.ziziele = [Math.random()];
addChild(kaufer);                                                                 
kaufer.addEventListener(Event.ENTER_FRAME, bewegung);


Nemez 12.11.2010 13:02

Цитата:

вы не путайте имя с ссылкой на объект
Вот и я про то говорю.
Итак, если мы вставляем в текст много раз
Код AS1/AS2:

var kaufer:Kaufer = new Kaufer();

через ТимерЕвент, допустим, и каждому пишем
Цитата:

kaufer.ziziele = [Math.random()];
, то будут ли они (kaufer.ziziele ) разными?

cleptoman 12.11.2010 13:03

ничто не мешает проверить )


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

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