PDA

Просмотр полной версии : Проблема с пользовательским курсором


Vansimar
20.09.2011, 18:42
есть класс для курсора 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 я его вызываю
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()
с чем это может быть связано?

goodguy
20.09.2011, 18:54
Все просто:

if (stage) init(); // если сцена доступна, инициализируем
else stage.addEventListener(Event.ADDED_TO_STAGE, init); // если она не доступна, то добавляем к недоступной сцене, т.е. к "ничему" слушатель


правильно так:

if (stage) init();
else this.addEventListener(Event.ADDED_TO_STAGE, init);


А тут:
_stage:DisplayObject
правильнее будет
_stage:DisplayObjectContainer