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

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

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
По умолчанию Задать в супер класе конструктор для расширяющего его класса

Задать в супер класе конструктор для расширяющего его класа. Можно ли ?

Задумка такая, что есть класс управляющий поведением различных кнопок.
И есть разные кнопки, которые расширяют этот класс.
Когда я создаю кнопку, я хочу передать некий параметр в её конструктор:
Код AS3:
new краснаяКнопка(15);
Но не хочу описывать этот самый конструктор в её "красноКнопочном" класе, и всех ей подобных, а сделать это 1 раз в супер класе.
__________________
Дети не должны знать о своих родителях


Последний раз редактировалось Tails; 30.12.2011 в 14:13.
Старый 30.12.2011, 14:21
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
knob constructor /
public function RedKnob(i:int) {
super(i)
}
где в суперклассе общая реализация для всех кнопок. тоесть
 
super class constructor
public function SuperClass(i:int) {
this.i = i; 
i = i + 100;
i--
funcBy(i)... and so on
__________________
Марк Tween

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Я думаю, товарищ спрашивал о том - как НЕ писать в конструкторе вот это:
Код AS3:
public function RedKnob(i:int) {
super(i)
}
А чтобы суперкласс сам запускал конструктор наследника и принимал в себя его параметры. Правда не пойму, неужели так сложно прописать 2 строчки? Я при создании нового класса в FlashDevelop ставлю галку на "Generate constructor matching base class" и получаю класс с готовым кодом:
Код AS3:
public function RedKnob(i:int) {
super(i)
}
И ничего писать не надо
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 30.12.2011 в 14:30.
Старый 30.12.2011, 14:26
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 4  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
странный вопрос
при наследовании наследник получает все свойства и методы (в том числе конструктор) наследуемого класса и может их расширить или изменить ( в том числе конструктор), но наследуемый клас ничего не знает о наследнике
__________________
Хороший отдых - половина работы.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Спасибо всем ответевшим, да я не хотел писать:
Код AS3:
public function RedKnob(i:int) {
super(i)
}
Потому, что для этого придёться создать отдельный .as фаил. Только из-за этого.

Видимо так и так придёться писать в две строки:
Код AS3:
var bt = new краснаяКнопка();
bt.i = 15;// или метод
__________________
Дети не должны знать о своих родителях

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от Tails Посмотреть сообщение
Видимо так и так придёться писать в две строки:
Код AS3:
var bt = new краснаяКнопка();
bt.i = 15;// или метод
И по вашему - это удобнее? А если кнопка создается 50 раз, и имеет не один параметр а несколько? Будете 50 раз писать?:
Код AS3:
var bt1 = new краснаяКнопка();
bt1.i = 15;
bt1.a = true;
bt1.b = "someValue";
............................................
var bti = new краснаяКнопка();
bti.i = 15;
bti.a = true;
bti.b = "someValue";
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 30.12.2011 в 14:50.
Старый 30.12.2011, 14:57
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 7  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
HardCoder
Код AS3:
var bti = new краснаяКнопка();
bti.metod(15,true,'someValue');// не по фуншую
А метод уже можно в супер класе описать.

Просто я хотел, чтоб было бы в одну строку:
Код AS3:
var bti = new краснаяКнопка(15,true,'someValue');// по фуншую
Без залезания в клас красной копки
__________________
Дети не должны знать о своих родителях


Последний раз редактировалось Tails; 30.12.2011 в 15:03.
Старый 30.12.2011, 15:00
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 8  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Так, стоп! Что-то у меня лыжи перестали ехать. Допустим ваша кнопка унаследована от SuperButton конструктор которого принимает в себя параметры:
Код AS3:
public function SuperButton (i:int = 10, changeable:Boolean = false, someVar:String = "tralala")
Значит при создании его наследника вам не надо создавать ас файл. Достаточно лишь написать:
Код AS3:
var bt1:краснаяКнопка = new краснаяКнопка(28, true, "someValue");
И если работаете во флеше - она сама во время компиляции создаст класс "краснаяКнопка"
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 30.12.2011 в 15:05.
Старый 30.12.2011, 15:05
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Сделайте фабричный метод, который у себя там сделает new, вызовет кучу инитов и вообще соберёт какую надо кнопку. Будет в одну строку. Такое часто делают)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
HardCoder
Не так не получиться.
__________________
Дети не должны знать о своих родителях

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

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

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


 


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


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