Просмотр полной версии : Избавиться от дополнительного клика
Имеется 3 класса. Уровень вложенности:
Main
gField
gHammer
В gHammer происходит событие MOUSE_DOWN, которая добавляет в координаты мыши спрайт, но спрайт добавляется тока после одного клика мыши.
Вопрос как избавиться от этого дополнительного клика, является ли focus решением данной проблемы?
Aquahawk
20.12.2011, 15:50
нет, focus вам не поможет.
Экстрасенсы в отпуске. Покажите пожалуйста минимальную версию кода и работающий пример swf, и напишите, как вы хотите чтобы оно работало.
Попробую угадать, может быть вам нужно на ваш добавляемый спрайт поставить параметр :
newSprite.mouseEnabled = false;
Или в контейнер для этого :
(gHammer || gField).mouseChildren = false; //?? куда вы спрайт то добавляете...
Видимо отписатся надо от клика, или выставить флажок.
С Уважением, Телепат №2
> но спрайт добавляется тока после одного клика мыши
> как избавиться от этого дополнительного клика
а где дополнительный клик?, вы описали только один клик
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;
}
}
Решилось, оказалось, что зачем-то добавил слушатель клика мыши, убрал его и все отлично заработало :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.