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

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

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

Регистрация: Jan 2007
Сообщений: 36
По умолчанию Error #2012: Obj_mc class cannot be instantiated.

Имеется класс Gm :
Код:
package {
		import flash.display.*;	
		import Obj_mc;	

	public class Gm extends MovieClip
	{
	
		public function Gm():void
		{
			  var obj:Obj_mc = new Obj_mc();

		}
}
и класс Obj_mc:

Код:
package
{
	import flash.display.*;
	import flash.events.*;
	
	public class Obj_mc extends DisplayObject
	
	{
		public function Obj_mc() {
		
		
		}
	}
		
}
После компиляции получаю сообщение:
ArgumentError: Error #2012: Obj_mc class cannot be instantiated.

в чем затык?


Последний раз редактировалось farmonol; 18.01.2007 в 17:41.
Старый 18.01.2007, 18:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
В том, что нельзя наследоваться от DisplayObject. Потому как это абстрактный класс.

Цитата:
Сообщение от Flex 2 Reference
DisplayObject is an abstract base class; therefore, you cannot call DisplayObject directly. Invoking new DisplayObject() throws an ArgumentError exception. All display objects inherit from the DisplayObject class. If you create a custom subclass of the DisplayObject class, it must extend a subclass of the DisplayObject class that has a valid new constructor.

Старый 18.01.2007, 19:16
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 3  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
Не совсем понял что имеется ввиду здесь:
If you create a custom subclass of the DisplayObject class, it must extend a subclass of the DisplayObject class that has a valid new constructor.

Хорошо, допустим я создал экземпляр movieclip:

Код:
var obj:DisplayObject;
obj=inst.addChild(new mc);
как obj наделить новыми свойствами и методами?

Старый 18.01.2007, 19:20
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ты можешь расширять только те классы, которые уже наследуются от DisplayObject.

Старый 18.01.2007, 19:51
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 5  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
Цитата:
Сообщение от __etc
Ты можешь расширять только те классы, которые уже наследуются от DisplayObject.
Тогда делаю так:
Код:
package {
		import flash.display.*;
		import flash.filters.DisplacementMapFilter;	
	
	public dynamic class Gm extends Sprite
{
public function Gm():void
		{	
var q:Mcobj;
q=stage.addChild(new mc);

		}
}

}
класс Mcobj:
Код:
package
{
	import flash.display.*;

	public dynamic class Mcobj extends Sprite
	{
		public function Mcobj():void
		{
		}
		
       public function Some_fn():void {}
	}
}
получаю ошибку:
TypeError: Error #1034: Type Coercion failed: cannot convert mc@1156431 to Mcobj

почему ругается на тип, если Mcobj наследуется от Sprite?
как мне в таком случае добавлять методы к экземпляру мувика?

Старый 18.01.2007, 19:57
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Потому что две строки в конструкторе Gm неверны.

Код:
var q:Mcobj = stage.addChild(new Mcobj());
q.Some_fn();
Кстати, зачем такие жуткие названия классов, переменных и имена методов?

Старый 18.01.2007, 20:11
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 7  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
а с мувиклипом mc что делать? мне нужно метод Some_fn() повесить на его экземпляр. Как мне прописать это?

Старый 18.01.2007, 20:16
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 8  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Купи себе книжку колина мука, и 90% вопросов пропадут=)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 18.01.2007, 20:18
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 9  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
ну ребят, а форум для чего тогда?
знаю что незнаю
подскажите плиз

Старый 18.01.2007, 20:26
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от farmonol
а с мувиклипом mc что делать? мне нужно метод Some_fn() повесить на его экземпляр. Как мне прописать это?
Ты можешь это сделать, объявив публичную переменную Some_fn типа Function. Но так не делают в AS3.

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

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

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


 


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


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