Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.06.2011, 12:46
daim вне форума Посмотреть профиль Отправить личное сообщение для daim Найти все сообщения от daim
  № 1  
Ответить с цитированием
daim

Регистрация: Jun 2011
Сообщений: 9
По умолчанию не успевает сработать CLICK

чето както неуспевает click сработать, стоит таймер на 100 милисекунд, он крутит карусельку(3Д которая),
и недает обработать своевременно click у Loader-а, да чего уж там, вот код:
Код AS3:
////////////////////////////////////////////////////////////////////////////////////////////////
//это класс картинок, ага:), со слушателем 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;
	}
 
		}
	}
МОЖ КТО ЧТО ПОДСКАЖЕТ

Старый 20.06.2011, 17:33
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Так вам никто не подскажет.

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

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

Старый 20.06.2011, 23:22
daim вне форума Посмотреть профиль Отправить личное сообщение для daim Найти все сообщения от daim
  № 3  
Ответить с цитированием
daim

Регистрация: Jun 2011
Сообщений: 9
Что значит "не успевает сработать click"?
что не успевает сработать событие которое я ему назначил -
Код AS3:
this.addEventListener(MouseEvent.CLICK,onClicked);
после клика по обьекту
И что должно происходить, если бы он успевал сработать?
чтото вроде -
Код AS3:
private function onClicked(ev:MouseEvent)
		{
			trace("clicked..");
		}
2. Неясно, что в приведенном коде относится к делу, а что - нет. Неясно, в каком кадре какого мувика написан код после класса, или может там разные куски в разных местах? Если не можете выделить проблемные участки кода, то хотябы выложите сам исходник.
согласен, да, хардкорно запостил код, каюсь.

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

там если присмотреться, можно такой участок узреть:
Код AS3:
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тогда событие случалось.

Старый 20.06.2011, 23:47
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Мы здесь говорим о клике по движущемуся объекту? Если нет — не обращай внимания на мой пост
Если да — может из-за того, что все мельтешит, это нельзя считать кликом? Координаты при MOUSE_DOWN и MOUSE_UP в контексте быстро движущегося объекта не позволяют связать их в "клик".

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

Старый 21.06.2011, 00:22
daim вне форума Посмотреть профиль Отправить личное сообщение для daim Найти все сообщения от daim
  № 5  
Ответить с цитированием
daim

Регистрация: Jun 2011
Сообщений: 9
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Мы здесь говорим о клике по движущемуся объекту?
ага
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Если да — может из-за того, что все мельтешит, это нельзя считать кликом? Координаты при MOUSE_DOWN и MOUSE_UP в контексте быстро движущегося объекта не позволяют связать их в "клик".
ага, пасиб за наводку, буду знать.
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Добавлено через 1 минуту
А ну и собственно рецепт, если я все правильно понял: замени CLICK на MOUSE_UP.
ну вот я примерно так и сделал, только почемуто выбрал MOUSE_DOWN, сам незнаю почему,
магнитная буря неиначе

Старый 21.06.2011, 00:34
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 6  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
магнитная буря неиначе
магнитной бури не замечено )

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.