![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 80
|
Вообщем я хотел создать отдельный класс в котором обралатываются движения мышки, пробывал его по разному делать, но не получается чото(туплю).
вот основной класс main_temp package {
import flash.display.*;
import mouse_cursor;//вот класс для мышки
public class main_temp extends Sprite {
var temp_mc:mouse_cursor//типо класс для мышки
//constr
public function main_temp( ) {
temp_mc = new mouse_cursor()//типо вызов класса для мышки
var rectAndCircle:Shape = new Shape( );
rectAndCircle.graphics.lineStyle(1);
rectAndCircle.graphics.beginFill(0x0000FF, 1);
rectAndCircle.graphics.drawRect(125, 50, 150, 75);
addChild(rectAndCircle);
}
}
}
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.ui.Mouse;
public class mouse_cursor extends Sprite {
public var cursor:Sprite = new Sprite();
public function mouse_cursor() {
cursor.graphics.beginFill(0xFF);
cursor.graphics.drawRect(0, 0, 25, 25);
stage.addChild(cursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);
Mouse.hide();
}
public function cursorFollow(evt:MouseEvent):void {
cursor.x = stage.mouseX;
cursor.y = stage.mouseY;
evt.updateAfterEvent();
}
}
}
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
А что говорит когда ругается?
Вообще stage доступен только после события Event.ADDED_TO_STAGE, так что в конструкторе указатель stage всё еще не определн. Попробуй так: public function mouse_cursor
{
addEventListener(Event.ADDED_TO_STAGE,onAddedToStage);
...
}
private function onAddedToStage(e:Event):void
{
// здесь stage уже доступен
stage.addEventListener(...)
stage. ...
...
removeEventListener(Event.ADDED_TO_STAGE,onAddedToSTage);
}
а не так: mouse_cursor
__________________
hell no ! |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Во-первых, Вы создаете экземпляр класса mouse_cursor, но не добавляете его в DisplayList, а пока он не добавлен, у него нет доступа к stage.
Во-вторых, даже если Вы добавите его в DisplayList, то в конструкторе класса mouse_cursor доступа к stage все равно не будет, нужно использовать событие ADDED_TO_STAGE. В третьих, что за названия классов и почему с маленькой буквы? Если уж называть по Вашему, то так: MainTemp, MouseCursor. Последний раз редактировалось mre; 09.08.2008 в 12:41. |
|
|||||
|
ну так там же написано, на что он ругается. у класса мыши в конструкторе нету свойства stage, потому что оно ещё не добавлено в display list. нужно слушать событие Event.ADDED_TO_STAGE
и ещё вы не добавляете создаваемые спрайты в display list, и именуете странно, и архитектура странная |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 80
|
та просто перехожу только на as3
ох и мутные эти события(раньше избегал их) , пасибо а можно впросов ещё: -для чего указывается входящий параметр? -а вообще лучше статичную функцию создать для добавления курсора мыши(а как)? -почему stage виден только при событии ADDED_TO_STAGE, вот в основном классе я ето событие то не проверяю? |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Цитата:
Цитата:
Цитата:
Цитата:
|
|
|||||
|
2автор stage в классе mouse_cursor (переименуйте его, кстати, в MouseCursor) бдет доступен только после того, как экземпляр этого самого класса будет добавлен в displayList т.е. тогда, когда вы его добавите на методом addChild(...)
|
|
|||||
|
Попробуйте так (почти работает [дергается])
//содержимое файла Мой_документ_класс_от_спрайта
package
{
import flash.display.*;
import flash.events.*;
import flash.events.*;
import flash.text.*;
dynamic public class Мой_документ_класс_от_спрайта extends Sprite
{
function Мой_документ_класс_от_спрайта()//конструктор
{
var моя_мышка = new MouseCursor(this);
}
}
}
//MouseCursor
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.ui.Mouse;
public class MouseCursor extends Sprite {
function MouseCursor(мой_документ:Sprite)
{
//public var cursor:Sprite = new Sprite();//нафик не нужна т.к. это ж уже спрайт
graphics.beginFill(0xFF);
graphics.drawRect(0, 0, 25, 25);
мой_документ.addChild(this);
stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);
Mouse.hide();
mouseEnabled = false;
}
function cursorFollow(evt:MouseEvent):void {
x = evt.localX;
y = evt.localY;
evt.updateAfterEvent();
}
}
}
Последний раз редактировалось Alex Lexcuk; 09.08.2008 в 20:59. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|