PDA

Просмотр полной версии : Избавиться от дополнительного клика


t4arty
20.12.2011, 15:26
Имеется 3 класса. Уровень вложенности:
Main
gField
gHammer

В gHammer происходит событие MOUSE_DOWN, которая добавляет в координаты мыши спрайт, но спрайт добавляется тока после одного клика мыши.

Вопрос как избавиться от этого дополнительного клика, является ли focus решением данной проблемы?

Aquahawk
20.12.2011, 15:50
нет, focus вам не поможет.
Экстрасенсы в отпуске. Покажите пожалуйста минимальную версию кода и работающий пример swf, и напишите, как вы хотите чтобы оно работало.

Genzo
20.12.2011, 15:58
Попробую угадать, может быть вам нужно на ваш добавляемый спрайт поставить параметр :
newSprite.mouseEnabled = false;
Или в контейнер для этого :
(gHammer || gField).mouseChildren = false; //?? куда вы спрайт то добавляете...

GBee
20.12.2011, 16:46
Видимо отписатся надо от клика, или выставить флажок.

С Уважением, Телепат №2

Jewelz
20.12.2011, 17:23
> но спрайт добавляется тока после одного клика мыши
> как избавиться от этого дополнительного клика

а где дополнительный клик?, вы описали только один клик

t4arty
20.12.2011, 17:32
Main

public class Main extends Sprite
{
public var gF:gField;

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
gF = new gField();
addChild(gF);
}

}


gField

public class gField extends Sprite
{
public var gH:gHammer;

public function gField():void {
if (stage) {
init();
}else {
addEventListener(Event.ADDED_TO_STAGE, init);
}
}

private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
addEventListener(MouseEvent.CLICK, m_e);
}

private function m_e(e:MouseEvent):void {
gH = new gHammer();
addChild(gH);
}
}

gHammer

public class gHammer extends Sprite
{
//
public var _bmd:BitmapData;
public var _bd:Bitmap;
//
public var oldX:Number;
public var oldY:Number;
public var nX:Number;
public var nY:Number;

public function gHammer():void {
if (stage) {
init();
}else {
addEventListener(Event.ADDED_TO_STAGE, init);
}
}

private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);

addEventListener(MouseEvent.MOUSE_DOWN, m_down);
addEventListener(MouseEvent.MOUSE_UP, m_up);

}

private function m_down(e:MouseEvent):void {
oldX = mouseX;
oldY = mouseY;

WhatHappen(oldX, oldY);
}
private function m_up(e:MouseEvent):void {
nX = mouseX;
nY = mouseY;
}

public function WhatHappen(x:int,y:int):void {
_bmd = new BitmapData(50, 50, false, 0xff0000);
_bd = new Bitmap(_bmd);
this.addChild(_bd);
_bd.x = oldX - _bd.width /2;
_bd.y = oldY - _bd.height / 2;
}
}

Решилось, оказалось, что зачем-то добавил слушатель клика мыши, убрал его и все отлично заработало :)