Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.02.2012, 15:45
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 1  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Question Можно ли динамически изменять члены класса

Предположим, есть переменная, типа Class:
Код AS3:
var someClass:Class;
Я присваиваю ей значение некоторый класс MyClass:
Код AS3:
someClass = MyClass;
Далее, в коде я создаю экземпляры:
Код AS3:
var someObj:* = new someClass();
В результате получаю полноценный экземпляр класса MyClass, содержащий все его поля методы.
Но теперь я хочу, чтобы вновь создаваемые экземпляры обладали еще другими полями/методами. Можно ли их доопределить в самом классе MyClass? Надеюсь, понятно изъяснился.

Старый 25.02.2012, 15:48
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
ВОт у меня было, что то похожее

Код 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;
		}
	}
 
}
__________________
Марк Tween

Старый 25.02.2012, 15:56
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 3  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Честно говоря, не понял. И как теперь прикрутить сюда новый метод?

Старый 25.02.2012, 15:57
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 4  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Silicium, какой смысл?
__________________
местонахождение

Старый 25.02.2012, 16:01
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 5  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Ну изначально возник такой вопрос, когда с p2p возился. (создавал много стримов к которым привязывал клиента, было бы удобнее, если бы можно было делать так). Как водится, задачу я решил по другому, но вопрос-то остался.

Старый 25.02.2012, 16:17
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 6  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
т.е., Вы хотите добавить в экземпляр, какого-то класса в рантайме методы, которых там не было (т.е. они не были определены программистом в классе в момент проектирования)?
А лучше объясните саму задачу, гадать надоедает.
__________________
местонахождение


Последний раз редактировалось СлаваRa; 25.02.2012 в 16:21.
Старый 25.02.2012, 16:22
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 7  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
MovieClip -- динамический класс. Поэтому вы можете добавлять к нему свойства во время выполнения.
Создайте фабрику ваших клипов и не создавайте ВАШИ мувклипы напрямую, а получайте их сконфигурированными через фабрику.
Можете создать подкласс мувклипа (тоже объявленный динамически), чтобы различать их во время выполнения.
Или прочитайте про наследование прототипов.
Конфигурируете мувклип, который должен стать прототипом и вперед.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 25.02.2012, 16:29
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 8  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Цитата:
А лучше объясните саму задачу, гадать надоедает.
СлаваRa, я же сказал, задачу я решил. Меня интересует такая возможность в принципе, а не решение конкретной задачи.

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

Старый 25.02.2012, 17:21
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 9  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Ну, чтобы была динамика, не обязательно наследоваться от movieclip-а. Мне кажется динамика здесь от лукавого (и не только здесь).
__________________
http://www.chessmax.ru

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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