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

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

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

Регистрация: May 2009
Сообщений: 122
По умолчанию Наследование

Здравствуйте.
Подскажите пожалуйста.
Есть главный класс
Код AS3:
package
{
	import flash.display.MovieClip;
 
	public class MainClass extends MovieClip
	{
		private var test:TestClass = new TestClass();
 
		public function MainClass()
		{
			trace("Main Class");
			addChild(test);
		}
		public function makeSound():void
		{
			trace("This is SuperClass");
		}
	}	
}
Есть класс, который наследуется от него
Код AS3:
package 
{
	public class DoubleClass extends MainClass
	{
		public function DoubleClass()
		{
			trace("This is DoubleClass");
		}
		public function bark():void
		{
			trace("DoubleClass: Hello World !!!");
		}
	}	
}
И класс который "вызывает" наследуемый класс
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class TestClass extends Sprite
	{		
		public function TestClass()
		{
			var double:DoubleClass = new DoubleClass();
			double.makeSound();
			double.bark();
		}
	}	
}
Но trace не выводятся, только ошибка
Код AS3:
Error: Error #2136: SWF-файл file:///C/child/Test.swf содержит недопустимые данные.
	at TestClass()
	at MainClass()
Подскажите, что не так , не могу разобраться


Последний раз редактировалось DarkKnight2009; 18.07.2011 в 22:17.
Старый 18.07.2011, 22:20
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Не понял, в MainClass вы создаете TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, ...
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
А MainClass это документ класс?

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

Регистрация: May 2009
Сообщений: 122
Цитата:
Сообщение от Bgg Посмотреть сообщение
А MainClass это документ класс?
Это главный класс, который подключается к swf

Добавлено через 50 секунд
Цитата:
Сообщение от GBee Посмотреть сообщение
Не понял, в MainClass вы создаете TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, ...
Вроде, как да... , а что это не правильно ?
Как тогда реализовать ?

Старый 18.07.2011, 22:33
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Это называется рекурсия. Уберите наследование от главного класса и замените его MovieClip/Sprite.
__________________
тут я

Старый 18.07.2011, 22:37
DarkKnight2009 вне форума Посмотреть профиль Отправить личное сообщение для DarkKnight2009 Найти все сообщения от DarkKnight2009
  № 6  
Ответить с цитированием
DarkKnight2009

Регистрация: May 2009
Сообщений: 122
Цитата:
Сообщение от КорДум Посмотреть сообщение
Это называется рекурсия. Уберите наследование от главного класса и замените его MovieClip/Sprite.
Так у меня главный клас наследуется от MovieClip, а класс DoubleClass наследуется от MainClass, это не правильно?
Как мне тогде сделать. чтоб класс DoubleClass наследовался от MainClass ?

Старый 18.07.2011, 22:39
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Зачем, скажите? В любом случае будет рекурсия.
__________________
тут я

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

Регистрация: May 2009
Сообщений: 122
Цитата:
Сообщение от КорДум Посмотреть сообщение
Зачем, скажите? В любом случае будет рекурсия.
Но если я в классе DoubleClass меняю extends на MovieClip, то у меня возникает ошибка, что
C:\Desktop\child\TestClass.as, строка 10 1061: Обращение к возможно неопределенному методу makeSound через ссылку статического типа DoubleClass.

Старый 18.07.2011, 22:44
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Так сделайте там этот метод. У вас на данный момент в классе DoubleClass только
Цитата:
public function bark():void
__________________
тут я

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Может вам не нужно наследование? Определитесь.

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

Теги
extends

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

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


 


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


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