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

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

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

Регистрация: Aug 2012
Сообщений: 38
По умолчанию Вопрос по классам

Здравствуйте. Рассматриваю пример. Как класс (из первого примера, например) запустить не как родительский, а как обычный класс? Делаю так:

Код AS3:
public function TestBody1():void {
  addEventListener(Event.ADDED_TO_STAGE, init);
 }
 
  private function init():void {
  graphics.beginFill(0x1B1B1B);
  graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
  addChild(debugSprite);
 
  createWorld();
  createWallStage();
  createBodies();
  createDebugDraw();
 
  addEventListener(Event.ENTER_FRAME, update);
  stage.addEventListener(MouseEvent.MOUSE_DOWN, flagCheck);
  stage.addEventListener(MouseEvent.MOUSE_UP, flagCheck);
 }
Реакции ни какой (пустой экран).

Старый 10.07.2013, 00:29
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 2  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
В примере еще куча кода, которого нет у вас

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

Регистрация: Aug 2012
Сообщений: 38
Я опустил, весь код, чтобы награмождал тему (он такой же, без изменений).
Ошибка: Error #1063: Несоответствие количества аргументов в TestBody1/init(). Ожидалось 0, получено 1.

Класс Main.as:
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.DisplayObject;
 
 
	public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			addChild(new TestBody1);
		}
 
	}
 
}


Последний раз редактировалось Fazer; 10.07.2013 в 02:07.
Старый 10.07.2013, 02:43
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну в тексте ошибки же написано, даже по-русски))

И зачем Вы показываете код класса Main, когда ошибка в функции init() класса TestBody1 ?
Предполагаю, что эта функция не принимает параметров (в отличие от такой же функции в Мэйн), а вызывается так же, как обработчик события, и следовательно должна принимать аргументом объект этого самого События))
__________________
Reality.getBounds(this);

Старый 10.07.2013, 09:32
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 5  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Очевидно что совсем неправильная работа с объектами. У вас две ошибки:
1.
Код AS3:
addEventListener(Event.ADDED_TO_STAGE, init);
...
 private function init():void {
...
}
У обработчика события Event.ADDED_TO_STAGE должен быть один входной параметр типа Event:
Код AS3:
 private function init(e:Event):void {
...
}
2. При вызове конструктора забыли скобки:
Код AS3:
addChild(new TestBody1());
И еще стоит отметить, что если создаете объект таким образом то потом никакого доступа к нему напрямую у вас не будет.

Советую почитать другие примеры, более начального уровня.

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

Регистрация: Aug 2012
Сообщений: 38
Wolsh, спасибо. KumoKairo , спасибо за подробный ответ. Думаю вы правы, ошибки элементарные. Позабыл теорию, надо браться по новой.

Старый 12.07.2013, 01:22
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 7  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
Код AS3:
graphics.beginFill(0x1B1B1B);
  graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
вызов метода graphics из пустоты не способствует реализации скрипта.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Koopa Посмотреть сообщение
Код AS3:
graphics.beginFill(0x1B1B1B);
  graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
вызов метода graphics из пустоты не способствует реализации скрипта.
Код AS3:
graphics
=
Код AS3:
this.graphics
__________________
return this...

Старый 12.07.2013, 02:45
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 9  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
ОК! А this в этом коде что?(коде источника)
да ещё какой-то debugSprite

Старый 12.07.2013, 03:22
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 10  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
this в данном случае это объект Main , который расширяет класс Sprite (является DisplayObjectContainer)
и при инициализации автоматически добавляется в Stage.
debugSprite - скорее всего просто переменная ссылающаяся на какой-то объект.
Также не соглашусь с KumoKairo
2. При вызове конструктора забыли скобки:
можно создавать объект опуская скобки , если не требуется передавать в конструктор параметры.
Код AS3:
var mc:MovieClip = new MovieClip;
addChild(mc);
mc.graphics.beginFill(0xff0000)
mc.graphics.drawRect(0,0,100,100);
mc.graphics.endFill();

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

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

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


 


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


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