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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.10.2010, 21:09
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию super method не хочет выводить текст

Такая вот трабла

Есть библиотечный клип

Код AS3:
public class Clip {
public function Clip() {}
public function setText(t1) {
  tf.text = t1;
} }
Ну и сабкласс

Код AS3:
public class sub extends Clip {
public function sub() {
 super.setText('hello'); }
}
Ошибок нет, эффекта ноль. Что то не так делаю ?

Старый 13.10.2010, 21:23
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Вы создаёте экземпляр sub? Попробуйте создать экземпляр Clip и вызвать setText - будет эффект?

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Хм. сделал 2 трейса
сдесь

Код AS3:
public function setText(t1) {
  trace(tf.text) // начальный текст
  tf.text = t1;
  trace(tf.text) // hello
}
Вроде бы все верно, а вот на сцене прежний текст ))) Не меняется, че за трабла то?

Добавлено через 57 секунд
Ах да, создаю экземпляр как и первого так и второго. Там надо

Добавлено через 2 минуты
Все кажись смысл я понял о чем ты, но как решить пока не пойму

Старый 13.10.2010, 21:32
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Ну ээ... сложно понять что Вы хотите чтобы сказать как решить Вашу проблему.

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
На данном этапе сделано так :

Класс Main в нем экземпляр класса Clip, и экземпляр класса sub. Где Clip это наш клип с графикой, а sub предназначен для настроек клипа из вне. Во как. Я так понимаю, что когда я включаю super метод, то он отрабатывает не для экземпляра класса созданного в Main. Ну а как же тогда обращаться?

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
обращаться к методу экземпляра и не путать теплое с мягким )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 13.10.2010, 21:40
iCluster вне форума Посмотреть профиль Отправить личное сообщение для iCluster Найти все сообщения от iCluster
  № 7  
Ответить с цитированием
iCluster

Регистрация: Oct 2010
Адрес: PNZ
Сообщений: 20
нуууу... мне кажется тут надо сделать так:
Код AS3:
public class sub extends Clip {
public function sub() {
 super();
 setText('hello');
}
}

Старый 13.10.2010, 21:41
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Ну ээ... создавая sub вы создаёте sub, который унаследовал поведение Clip. То есть Clip, по сути, кастрированная версия sub. Проще говоря создавая sub Вы создаёте по сути Clip, расширенный до функционала Clip.

@iCluster: компилятор сам вставит super в начале конструктора, если super не написан явно. setText или super.setText или this.setText - не имеет значения, если setText не переопределен. В абс-коде разница есть, но по логике работы - нет.

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
iCluster/ Нет вариант не прокатывает.

cleptoman и как же онное сделать? я честно говоря запутался

Добавлено через 4 минуты
Вот так есть допустим:

Код AS3:
class Main() {
 var _class1 = new Class1(somevar);
 var _class2 = new Class2()
  public function Main() { addChild(_class1) }
} 
 
 
class Class1() { function SetText(text) {} }
 
class Class2() extends Class1{  // тут нужно залезть в Class 1  и занести значение в метод SetText  }


Последний раз редактировалось in4core; 13.10.2010 в 21:48.
Старый 13.10.2010, 21:51
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Код AS3:
class Class2 extends Class1(){
public function Class2(){
super.setText("hello!");
}
}
 
class Class1{
protected function setText(value:String):void{
trace(value);
}
}
 
class Main extends Sprite{
public function Main(){
new Class1(); //ничего не произойдёт, потому что в Class1 не вызывается setText
new Class1(); //вторая попытка тоже ничего не даст
new Class2(); //вылезет трейс
}
}

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

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

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


 


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


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