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

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

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

Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
По умолчанию Проблема с пользовательским курсором

есть класс для курсора
Код AS3:
package src{
 
    import flash.display.MovieClip;
    import flash.display.DisplayObject;
	import flash.events.Event;
    import flash.events.MouseEvent;
	import flash.ui.Mouse;
 
    public class Cursor extends MovieClip {
 
        private var cursor:MovieClip;
 
 
        public function Cursor( _stage:DisplayObject, _cursor:MovieClip ) 
		{
 
			cursor = _cursor;
			addChild( cursor );
 
			_stage.addEventListener( Event.MOUSE_LEAVE, cursorHide );
			_stage.addEventListener( MouseEvent.MOUSE_MOVE, cursorFollow );
			Mouse.hide();
 
        }
 
        private function cursorHide( evt:Event ):void
		{
			//Mouse.hide();
            cursor.visible = false;
        }
 
        private function cursorFollow( evt:MouseEvent ):void
		{
            if ( !cursor.visible ) cursor.visible = true;
            cursor.x = stage.mouseX;
            cursor.y = stage.mouseY;
            evt.updateAfterEvent();
		}
    }
}
и в классе Main я его вызываю
Код AS3:
package src
{
	import src.*;
 
	import flash.display.*;
	import adobe.utils.ProductManager;
	import flash.events.*;
 
	public class  Main extends MovieClip
	{
		public function Main()
		{
 
			if (stage) init();
			else stage.addEventListener(Event.ADDED_TO_STAGE, init);
 
 
 
		}
		private function init(e:Event = null):void 
		{
			addChild( new Cursor( stage, new Lip() ) ); 
		}
	}
 
}
и вылетает ошибка TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at src::Main()
с чем это может быть связано?

Старый 20.09.2011, 18:54
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Все просто:
Код AS3:
if (stage) init(); // если сцена доступна, инициализируем
else stage.addEventListener(Event.ADDED_TO_STAGE, init); // если она не доступна, то добавляем к недоступной сцене, т.е. к "ничему" слушатель
правильно так:
Код AS3:
if (stage) init();
else this.addEventListener(Event.ADDED_TO_STAGE, init);
А тут:
Цитата:
_stageisplayObject
правильнее будет
Код AS3:
 _stage:DisplayObjectContainer

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

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

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


 


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


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