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

Silicium 25.02.2012 15:45

Можно ли динамически изменять члены класса
 
Предположим, есть переменная, типа Class:
Код AS3:

var someClass:Class;

Я присваиваю ей значение некоторый класс MyClass:
Код AS3:

someClass = MyClass;

Далее, в коде я создаю экземпляры:
Код AS3:

var someObj:* = new someClass();

В результате получаю полноценный экземпляр класса MyClass, содержащий все его поля методы.
Но теперь я хочу, чтобы вновь создаваемые экземпляры обладали еще другими полями/методами. Можно ли их доопределить в самом классе MyClass? Надеюсь, понятно изъяснился.

in4core 25.02.2012 15:48

ВОт у меня было, что то похожее

Код AS3:

package com.roulette.elements 
{
        import flash.display.MovieClip;
        import flash.display.Sprite;
 
        /**
        * ...
        * @author in4core
        */

        public class Coin extends Sprite
        {
                private static var _coin:Class;
                private var co:MovieClip;
 
                private var _code:String;
                private var _c:String;
 
                public static function registerCoin ( coin:Class ):void {
 
                        _coin = coin;
                }
 
                public function Coin()
                {
                        if (!_coin) return;
 
                        co = new _coin() as MovieClip;
                        co.mouseEnabled = this.mouseEnabled = false;
                        co.mouseChildren = this.mouseChildren = false;
                        addChild(co);
                }
 
 
 
                public function set buffer( buf:int ):void {
 
                        co.gotoAndStop(buf);
                }
 
                public function set code ( c:String ) :void {
                        _code = c;
                }
 
                public function get code ():String {
                        return _code;
                }
 
                public function set text(s:String):void {
 
                        co.tf.text = s;
                }
 
                public function get text():String {
                        return co.tf.text;
                }
 
                public function set point(c:String):void {
 
                        _c = c;
                }
 
                public function get point():String
                {
                        return _c;
                }
        }
 
}


Silicium 25.02.2012 15:56

Честно говоря, не понял. И как теперь прикрутить сюда новый метод?

СлаваRa 25.02.2012 15:57

Silicium, какой смысл?

Silicium 25.02.2012 16:01

Ну изначально возник такой вопрос, когда с p2p возился. (создавал много стримов к которым привязывал клиента, было бы удобнее, если бы можно было делать так). Как водится, задачу я решил по другому, но вопрос-то остался.

СлаваRa 25.02.2012 16:17

т.е., Вы хотите добавить в экземпляр, какого-то класса в рантайме методы, которых там не было (т.е. они не были определены программистом в классе в момент проектирования)?
А лучше объясните саму задачу, гадать надоедает.

ChuwY 25.02.2012 16:22

MovieClip -- динамический класс. Поэтому вы можете добавлять к нему свойства во время выполнения.
Создайте фабрику ваших клипов и не создавайте ВАШИ мувклипы напрямую, а получайте их сконфигурированными через фабрику.
Можете создать подкласс мувклипа (тоже объявленный динамически), чтобы различать их во время выполнения.
Или прочитайте про наследование прототипов.
Конфигурируете мувклип, который должен стать прототипом и вперед.

Silicium 25.02.2012 16:29

Цитата:

А лучше объясните саму задачу, гадать надоедает.
СлаваRa, я же сказал, задачу я решил. Меня интересует такая возможность в принципе, а не решение конкретной задачи.

Цитата:

Создайте фабрику ваших клипов
Цитата:

Конфигурируете мувклип, который должен стать прототипом и вперед.
Вот куда-то в эту сторону я и думал, только конкретно как реализовать не сообразил

Inet_PC 25.02.2012 17:21

Ну, чтобы была динамика, не обязательно наследоваться от movieclip-а. Мне кажется динамика здесь от лукавого (и не только здесь).


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

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