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

HardCoder 30.12.2011 15:18

Цитата:

Сообщение от Tails (Сообщение 1054431)
HardCoder
Не так не получиться.

Потому что у вас там нюансы какие-то, или потому что предоставленный мною способ вообще не сработает?

Tails 30.12.2011 15:20

HardCoder
Наверное второе, какие могут быть нюансы в чистом новом проекте ? Попробуйте сами.

Цитата:

И если работаете во флеше - она сама во время компиляции создаст класс "краснаяКнопка"
Да именно поэтому и нехочеться создавать отдельный as

HardCoder 30.12.2011 15:34

Только что попробовал: действительно в параметрах мувиклипа флеш не разрешает сделать base class одним из пользовательских классов - только встроенные. Признаю свою ошибку.

Tails 30.12.2011 15:37

Цитата:

Сообщение от HardCoder (Сообщение 1054435)
Только что попробовал: действительно в параметрах мувиклипа флеш не разрешает сделать base class одним из пользовательских классов - только встроенные. Признаю свою ошибку.

Нет, назначить свой класс можно, перепроверте. Скомпилировать по вашей схеме нельзя.
Тоесть не будет работать конструктор описанный в супер класе, когда создаёться экземпляр его потомка.

Ваш базовый клас должен расширять Movie clip

-De-
В две строчки догда уж проще :)

HardCoder 30.12.2011 16:14

Цитата:

Сообщение от Tails (Сообщение 1054436)
Нет, назначить свой класс можно, перепроверте.

Я говорил не про свой класс - а базовый, но и здесь ошибался. Пробил по выдаваемой ошибке и получил:
Цитата:

Если конструктор базового класса содержит 1 или более обязательных аргументов, то его вызов следует осуществлять с помощью инструкции super() в явном виде.
Этим все сказано...
Но все равно. Допустим в зеленой кнопки свойство i должно быть всегда 10, а свойство prop должно быть "green". Соответственно в красной кнопке 28 и "red". Но у них должно быть одно общее свойство generalProp например true.
Создаем класс:
Код AS3:

public class SuperButton {
public var i:int;
public var generalProp:Boolean = true;
public var prop:String;
}

Создаем кнопки:
Код AS3:

var green:SuperButton = new SuperButton();
green.i = 10;
green.prop = "green";
 
var red:SuperButton = new SuperButton();
red.i = 28;
red.prop = "red";

Смотрим и не понимаем зачем нам это.

Делаем более приятный вариант Создаем класс:
Код AS3:

public class SuperButton {
public var i:int;
public var generalProp:Boolean;
public var prop:String;
public function SuperButton (i:int, prop:String) {
this.i = i;
this.prop = prop;
}
}

Создаем класс зеленой кнопки:
Код AS3:

тралала...
public function GreenButton(){
super(10, "green");
}

красной:
Код AS3:

тралала...
public function RedButton(){
super(28, "red");
}

Создаем кнопки:
Код AS3:

var green:GreenButton = new GreenButton();
var red:RedButton = new RedButton();

Смотрим - любуемся...

Добавлено через 2 минуты
Хотя, хазяин - барин...

КорДум 30.12.2011 16:46

Цитата:

Да именно поэтому и нехочеться создавать отдельный as
Да чего уж, пишите в кадрах, если лень. FD умеет создавать классы с параметрами в super.


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

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