Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как передать у казатель на объект? (http://www.flasher.ru/forum/showthread.php?t=94895)

Coffein 22.04.2007 19:19

Как передать у казатель на объект?
 
Всем здрасти! Помогите пожулусто решить следующий вопрос:
Я описал класс для некоторого обекта танк:

Код:

class Tank extends MovieClip {
        var Tw:Tower;
        var type_t:String;
        function Tank(parent:Object, param_id:String, param_type:String, param_x:Number, param_y:Number, param_rotation:Number, param_towerRotation:Number){
                trace(parent);
                parent.attachMovie("T-34", param_id, 1);
                parent[param_id]._x                        = param_x;
                parent[param_id]._y                        = param_y;
                parent[param_id]._rotation                = param_rotation;
                this.type_t                = param_type;
                this.Tw                        = new Tower(?, param_towerRotation);
                trace('Tank "'+this.type_t+'" created');
        }
}

Конструктор этогокласса создает платформу. Теперь я хочу приаттачить к этой платформе башню. Для этого я в кострукторе описываю переменную данного типа(тоесть я отдельно описал класс "башня"):
Код:

var Tw:Tower;
    ...

После этого должен вызвать конструктор с парамметром указателя на платформу. (Это для того чтобы аттачить не к _root'у, а именно к платформе).
Код:

this.Tw                        = new Tower(?, param_towerRotation);
Подскажите как передать указатель, или возможно ли такое?

etc 22.04.2007 19:23

Что есть Tower?

Coffein 22.04.2007 19:24

Это класс:
Код:

class Tower extends MovieClip {
       
        function Tower(parent1:Object, param_rotation:Number){
                trace(parent1);
                parent1.attachMovie("t34_tw", "mytower", 1);
                //this._rotation = param_rotation;
                //trace('rotation: '+this._rotation);
                trace('Tower created');
        }
}


etc 22.04.2007 19:25

Мувиклипы не создаются через конструктор. В linkage у клипа в библиотеке должен быть указан соответствующий класс для клипа, в данном случае Tower.

Coffein 22.04.2007 19:31

Все так и указано, но он не аттачится, потомучто как я понял он не понимает куда аттачить. Как быть?

etc 22.04.2007 19:36

Нет, неправильный подход вообще и в целом.
Класс Tank наследуется от MovieClip => в библиотеке должен быть клип платформы танка, с описанным linkage id и классом Tank. Далее, там где требуется создать танк должны быть следующие строки:

Код:

var tank:Tank = Tank(this.attachMovie('TankLinkage','tank_mc',0,{_x:10,_y:20,_rotation:30}));
Аналогично должно быть описано в самом классе Tank для Tower.
Т.е. примерно так:

Класс Tank:
Код:

class Tank extends MovieClip {
    private var tower:Tower;
    private function Tank() {
        this.tower = Tower(this.attachMovie('TowerLinkage','tower',0,{_x:5,_y:10,_rotation:40}));
    }
}

Класс Tower в принципе ничего не должен знать о своих родителях, т.е. о классе Tank.

Coffein 22.04.2007 20:02

__etc, в моем коде:
Код:

this.Tw                        = new Tower(?, param_towerRotation);
надо было передать парамметр parent[param_id]. Теперь все заработало.

Но __etc, поясни ламеру, почему мой подход не правельный?

etc 22.04.2007 20:25

Либо твои классы не должны наследоваться от MovieClip (они не являются клипами), либо должны быть описаны, как я написал.

Coffein 22.04.2007 20:36

Понятно, спасибо за помощь!


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

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