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

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

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

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Приведение типов

Здравствуйте, как в Main вызвать у экземпляра RedBall метод его предка Ball?


Код AS3:
	public class Main extends Sprite {
 
		public var vec:Array = new Array;
 
		public function Main() {
 
			var ball:RedBall= new RedBall();
 
			Ball(ball).name(); // выведет RedBall хотя по идее должен Ball
 
 
 
		}
 
 
	}
Код AS3:
public class Ball {
 
		public function Ball() {
 
		}
 
		public function name():void {
 
			trace("Ball")
		}
	}
Код AS3:
	public class RedBall extends Ball{
 
		public function RedBall() {
 
		}
 
		public override function name():void {
 
			trace("RedBall")
		}
	}

Старый 05.06.2012, 18:19
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Ball(ball).name(); // выведет RedBall хотя по идее должен Ball
Метод переопределён в RedBall
Создайте в Ball метод и не переопределяйте его, тогда можно будет вызвать

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

Регистрация: Feb 2012
Сообщений: 212
Я удивился, то потому, что в AS2 сработал бы метод именно Ball т.е. метод типа к которому мы приводим объект. Что бы это обойти там мне пришлось использовать интерфейсы, думал и в AS3 также.

Старый 05.06.2012, 18:31
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
А можно пример для AS2?

Старый 05.06.2012, 18:53
stflasher вне форума Посмотреть профиль Отправить личное сообщение для stflasher Найти все сообщения от stflasher
  № 5  
Ответить с цитированием
stflasher

Регистрация: Jun 2009
Сообщений: 61
Сделал так
Добавил в класс RedBall метод name1
Код AS3:
	public class RedBall extends Ball
	{
 
		public function RedBall()
		{
 
		}
		public function name1():void
		{
 
			super.name()
		}		
 
		public override function name():void
		{
 
			trace("RedBall");
		}
	}
В классе Main вызывается обычным методом ball.name1()

Код AS3:
	public class Main extends Sprite
	{
 
		public var vec:Array = new Array  ;
 
		public function Main()
		{
 
			var ball:RedBall= new RedBall();
 
			ball.name1()
		}
	}

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

Регистрация: Feb 2012
Сообщений: 212
udaaff
Увы, дело было давнишние и код утерян. Правда вполне возможно, что такое свойство AS2 я нашел только благодаря кривизне своих рук!
stflasher
Не-не-не, так не интересно! Вот если бы можно было вызвать метод из Main не трогая другие классы...

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

Регистрация: Jun 2009
Сообщений: 61
А зачем так извращаться? Задача была такая "как в Main вызвать у экземпляра RedBall метод его предка Ball?"
Модифицируйте класс RedBall до добавления ещё одного метода и юзайте в Main'e.
Вроде больше никак нельзя.

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

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

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


 


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


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