PDA

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


daim
20.06.2011, 12:46
чето както неуспевает click сработать, стоит таймер на 100 милисекунд, он крутит карусельку(3Д которая),
и недает обработать своевременно click у Loader-а, да чего уж там, вот код:

////////////////////////////////////////////////////////////////////////////////////////////////
//это класс картинок, ага:), со слушателем CLICK
package {
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.MouseEvent;

public class imageClass extends Loader {
public var indx:int;
public function imageClass() {
this.addEventListener(MouseEvent.CLICK,onClicked);
}
public function LoadImage(filename:String):void
{
this.load(new URLRequest(filename));
}
private function onClicked(ev:MouseEvent)
{
trace("clicked..");
}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

//////////MovieClip//////////////
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMovieFunc);

btn_1.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
var pImage=new Array(30);
var Ir:int=0;
///////////////////////////
var posAnim=1.0;
var RadiusX=200;
var RadiusY=60;
var Scale=0.3;
var PosX=0;
var PosY=0;
///////////////////////////////
var myTimer:Timer=new Timer(100);
function fl_MouseClickHandler(event:MouseEvent):void
{
myTimer.addEventListener(TimerEvent.TIMER,anime);

for(var i=0;i<30;i++)
{
pImage[i]=new imageClass();
pImage[i].LoadImage("ava.gif");
addChild(pImage[i]);
pImage[i].indx=i;
pImage[i].contentLoaderInfo.addEventListener(Event.COMPLETE,compl);

}
}
///////////////////////////
var ssp=0;
var r=0;
function anime(event:Event):void
{var ScalePrev=0;
for(var i=0;i<30;i++)
{
pImage[i].x=PosX+RadiusX*Math.sin(posAnim+i*12*2*Math.PI/360);
pImage[i].y=PosY+RadiusY*Math.cos(posAnim+i*12*2*Math.PI/360);
Scale=pImage[i].y/(PosY+RadiusY);
pImage[i].content.scaleX=Scale*0.1;
pImage[i].content.scaleY=Scale*0.1;
}
//Sort the array so that the item which has the highest
//z position (= furthest away) is first in the array
var qrp=pImage.sortOn("y", Array.NUMERIC);

//Set new child indexes for the item
for (var i:uint = 0; i < pImage.length; i++) {
setChildIndex(pImage[i], i);}

posAnim+=r*0.05;
}
var sPos=0;
var tPos=0;
function compl(event:Event):void
{
var s=event.currentTarget.loader as Loader;
s.content.scaleX=0.1;
s.content.scaleY=0.1;

PosX=stage.stageWidth/2;
PosY=stage.stageHeight/2-100;
sPos=PosX+RadiusX;
tPos=PosX-RadiusX;

myTimer.start();
btn_1.visible=false;
}
//////////////MOUSE MOVIE FUNCTION//////////////

function mouseMovieFunc(e:MouseEvent):void
{
if(e.stageX<sPos && e.stageX>tPos)
{
if(e.stageX>PosX)
r=e.stageX/sPos;
else if(e.stageX<PosX){
r=tPos/e.stageX;
if(r>0.0)r=-r;
}

}
}

МОЖ КТО ЧТО ПОДСКАЖЕТ:)

Gaen
20.06.2011, 17:33
Так вам никто не подскажет.

1. Вопрос неясен. Что значит "не успевает сработать click"? В чем это выражается, что происходит? И что должно происходить, если бы он успевал сработать?

2. Неясно, что в приведенном коде относится к делу, а что - нет. Неясно, в каком кадре какого мувика написан код после класса, или может там разные куски в разных местах? Если не можете выделить проблемные участки кода, то хотябы выложите сам исходник.

daim
20.06.2011, 23:22
Что значит "не успевает сработать click"?
что не успевает сработать событие которое я ему назначил -
this.addEventListener(MouseEvent.CLICK,onClicked);
после клика по обьекту
И что должно происходить, если бы он успевал сработать?
чтото вроде - private function onClicked(ev:MouseEvent)
{
trace("clicked..");
}
2. Неясно, что в приведенном коде относится к делу, а что - нет. Неясно, в каком кадре какого мувика написан код после класса, или может там разные куски в разных местах? Если не можете выделить проблемные участки кода, то хотябы выложите сам исходник.
согласен, да, хардкорно запостил код, каюсь.

ну вроде как разобрался, хотя это и неназвать разобрался, кароче заменил
this.addEventListener(MouseEvent.CLICK,onClicked);
на
this.addEventListener(MouseEvent.MOUSE_DOWN,onClicked);
ииии, все заработало:), а вот почему с CLICK неработало, я так и не осознал:'(

там если присмотреться, можно такой участок узреть:

myTimer.addEventListener(TimerEvent.TIMER,anime);
function anime(event:Event):void
{var ScalePrev=0;
for(var i=0;i<30;i++)
{
pImage[i].x=PosX+RadiusX*Math.sin(posAnim+i*12*2*Math.PI/360);
pImage[i].y=PosY+RadiusY*Math.cos(posAnim+i*12*2*Math.PI/360);
Scale=pImage[i].y/(PosY+RadiusY);
pImage[i].content.scaleX=Scale*0.1;
pImage[i].content.scaleY=Scale*0.1;
}
//Sort the array so that the item which has the highest
//z position (= furthest away) is first in the array
var qrp=pImage.sortOn("y", Array.NUMERIC);

//Set new child indexes for the item
for (var i:uint = 0; i < pImage.length; i++) {
setChildIndex(pImage[i], i);}

posAnim+=r*0.05;
}

так вот, пока работает таймер, событие клика почти не наступало, единственный выход, это
кликать мыш с частотой ~ 50 Hz:)тогда событие случалось.

Zebestov
20.06.2011, 23:47
Мы здесь говорим о клике по движущемуся объекту? Если нет — не обращай внимания на мой пост :)
Если да — может из-за того, что все мельтешит, это нельзя считать кликом? Координаты при MOUSE_DOWN и MOUSE_UP в контексте быстро движущегося объекта не позволяют связать их в "клик".

Добавлено через 1 минуту
А ну и собственно рецепт, если я все правильно понял: замени CLICK на MOUSE_UP.

daim
21.06.2011, 00:22
Мы здесь говорим о клике по движущемуся объекту?

ага:)

Если да — может из-за того, что все мельтешит, это нельзя считать кликом? Координаты при MOUSE_DOWN и MOUSE_UP в контексте быстро движущегося объекта не позволяют связать их в "клик".

ага, пасиб за наводку, буду знать.

Добавлено через 1 минуту
А ну и собственно рецепт, если я все правильно понял: замени CLICK на MOUSE_UP.

ну вот я примерно так и сделал, только почемуто выбрал MOUSE_DOWN, сам незнаю почему,
магнитная буря неиначе:)

i.o.
21.06.2011, 00:34
магнитная буря неиначе
магнитной бури не замечено (http://www.swpc.noaa.gov/rt_plots/kp_3d.html) )