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

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

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

Регистрация: Jul 2009
Сообщений: 77
По умолчанию приведение типов (не получается)

не понимаю почему не удаётся привести тип объекта к нужному. Код ниже, MainClass - основной.
Код AS3:
package {
	import flash.display.*;
 
	public class MainClass extends Sprite {
		private var zzz:Sprite;
 
		public function MainClass() {
			zzz = new TestClass();
			TestClass(zzz);
			zzz.myMethod();
			addChild(zzz);
		}
	}
}
Код AS3:
package {
	import flash.display.*;
 
	public class TestClass extends Sprite {
		private var whiteBack:Shape;
 
		public function TestClass() {
			whiteBack = new Shape();
			whiteBack.graphics.beginFill(0x999999, 1);
			whiteBack.graphics.drawRect(0, 0, 150, 100);
			addChild(whiteBack);
		}
		public function myMethod() {
			whiteBack.x+=10;
		}
	}
}
выходит ошибка: "Call to a possibly undefined method myMethod through a reference with static type flash.display:Sprite."

в моём понимании zzz сначала Sprite, потом TestClass(zzz) - приводит zzz к типу TestClass и нам становятся доступны все методы этого класса. Но методы не доступны, почему?
И почему пишут, что zzz ещё Sprite, разве он уже не TestClass?

если мы заменим строку zzz.myMethod(); на if (zzz is TestClass){zzz.myMethod();}
выходит та же ошибка, получается zzz имеет уже тип TestClass, но методы этого класса вызвать не может. Как же так?


Последний раз редактировалось filepark; 28.09.2010 в 06:20.
Создать новую тему   Часовой пояс GMT +4, время: 02:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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