Форум 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)
-   -   Linkage. Создание класса с параметрами (http://www.flasher.ru/forum/showthread.php?t=139138)

saikspaik 24.04.2010 03:38

Linkage. Создание класса с параметрами
 
У меня есть класс для движения объектов, и много объектов этого класса.
Нужно передать в конструктор класса, свойства, чтобы объекты двигались с разной скоростью. В коде это выглядело бы так:
Код AS3:

var myObject:MyClass = new MyClass(myVar);

Так вот, можно ли в окне linkagе передать этот параметр (myVar), классу?
Надеюсь понятно изложил :)

udaaff 24.04.2010 03:46

Если речь идет о linkage, значит объект является мувиклипом, а мувиклипы в AS1.0/2.0 не создаются при помощи оператора new.
В attachMovie() можно передавать объект для инициализации.

saikspaik 24.04.2010 04:46

Спасибо.
А в AS 3.0 дела обстоят иначе?
Про attachMovie() знаю, но он не подходит. Нужно чтобы на момент приаттачивания переменная уже уже была передана.
Из вариантов в голову приходит только создания общего класса и нескольких дочерних, которые полностью наследуют родителя, только меняют переменную скорости.

udaaff 24.04.2010 05:07

Цитата:

А в AS 3.0 дела обстоят иначе?
Так как в вашем примере.
Цитата:

Про attachMovie() знаю, но он не подходит.
Переменная задается до вызова конструктора.

saikspaik 25.04.2010 02:34

Недопонял. В AS 3.0 в linkage тоже нельзя передать параметры?
И про attachMovie() тоже не ясно. Конструктор примерно такой:
Код AS3:

public function MyClass(someVar:Number):void {
    trace(someVar);
}

Мне нужно передать этот someVar

KiL33 25.04.2010 09:25

Вот так надо

Main
Код AS3:

package {
 
        import controls.ObjectControl;
 
        import flash.display.Sprite;
 
        public class Main extends Sprite {
 
                //CONSTRUCTOR
                public function Main() {
 
                        init();
 
                }
                private function init():void {
 
                        var object1:ObjectControl = new ObjectControl(10);
                        addChild(object1);
 
                        //Object2       
                        var object2:ObjectControl = new ObjectControl(5);
                        addChild(object2);
                        object2.y = object1.height+10;
 
                        //Object3       
                        var object3:ObjectControl = new ObjectControl(1);
                        addChild(object3);
                        object3.y = object1.height + object2.y+10;
                }               
 
        }//class
}//package


Box(objects)
Код AS3:

package components {
 
        import flash.display.Sprite;
 
        public class Box extends Sprite {
 
                //CONSTRUCTOR
                public function Box() {
 
                init();
 
                }
        private function init():void {
 
                var sBox:Sprite = new Sprite();
                sBox.graphics.beginFill(0x000000);
                sBox.graphics.drawRect(0, 0, 30, 30);
                sBox.graphics.endFill();
                addChild(sBox);
        }
 
        }//class
}//package


ObjectControl
Код AS3:

package controls {
 
        import components.Box;
 
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class ObjectControl extends Sprite {
 
                private var aBox:Box;
                private var bBox:Box;
                private var sBox:Sprite;
                private var speedBox:uint;
 
                //CONSTRUCTOR
                public function ObjectControl(value:uint) {
 
                        speedBox = value
                        init(speedBox);
 
                }
 
                private function init(speedBox:uint):void {
                        sBox = new Sprite();
                        addChild(sBox);
 
                        aBox =  new Box();
 
                        sBox.addChild(aBox)
 
                        addEventListener(Event.ENTER_FRAME, actionObject)
                }
 
                private function actionObject(e:Event):void {
 
                        sBox.x += speedBox;
 
                }
 
        }//class
}//package

В майне нужно создавать объекты и передавать классу параметры скорости
//var object1:ObjectControl = new ObjectControl(здесь параметр который ты передаешь);

И посмотри ещё один мой пример
http://www.flasher.ru/forum/showthre...=138682&page=2
(пост №15)
думаю тебе будет полезен.

saikspaik 26.04.2010 04:22

Спасибо, но это тоже не подойдет.


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

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