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

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

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

Регистрация: May 2012
Сообщений: 18
По умолчанию Не отслеживаются клики

Вот решил создать простенькую игру для практики на AS3.Вот её исходный код:
Код AS3:
var timer:Timer = new Timer(2000);
var o:int = Math.random() * 6 + 1;
var score:int = 0;
stage.addEventListener(Event.ENTER_FRAME, oz);
function oz(e:Event):void{
	o = Math.random() * 6 + 1;
}
timer.addEventListener(TimerEvent.TIMER, clock);
timer.start();
function clock(e:TimerEvent):void {
    this["lampa" + o].gotoAndPlay("red");
 
}
 
 
stage.addEventListener(MouseEvent.CLICK, clic)
function clic(e:MouseEvent):void{
	if (this["lampa" + o].currentLabel == "red" && this["lampa" + o].hitTestPoint(mouseX, mouseY, true)){
		this["lampa" + o].gotoAndPlay("green");
		score++;
		trace(score);
	}
 
}
А вот она сама:igra.rar
Так вот дело в том, что она почти не отслеживает клики. Из 10 кликов по шарикам может один и заметит.
В чём проблема? И вообще, как бы вы сделали это, потому что мой подход наверно совершенно не правельный)?

Старый 22.05.2012, 21:53
xdoom вне форума Посмотреть профиль Отправить личное сообщение для xdoom Найти все сообщения от xdoom
  № 2  
Ответить с цитированием
xdoom
 
Аватар для xdoom

Регистрация: Apr 2008
Адрес: black sea
Сообщений: 137
Отправить сообщение для xdoom с помощью MSN Отправить сообщение для xdoom с помощью Skype™
сделай так
Код AS3:
var lamp:Object = this["lampa" + o]
trace(lamp.currentLabel, lamp.hitTestPoint(mouseX, mouseY, true),mouseX, mouseY)
может сообразишь что не так.


а вообще да, подход странный )
__________________
trace("my notes")


Последний раз редактировалось iNils; 22.05.2012 в 21:55.
Старый 22.05.2012, 22:36
sanchoys14 вне форума Посмотреть профиль Отправить личное сообщение для sanchoys14 Найти все сообщения от sanchoys14
  № 3  
Ответить с цитированием
sanchoys14

Регистрация: May 2012
Сообщений: 18
Попробовал так. Мне это ни о чём не говорит) Нельзя ли как нибуть ещё подтолкнуть меня на правильный путь, или лучше вообше готовый код дать?

Старый 22.05.2012, 22:37
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Вы каждый кадр рандомно меняете индекс o. И при клике проверяете на попадание только один круг с этим рандомным индексом.
Я бы советовал подписать на клик все 6 ламп, и тогда в условии можно оставить только
Код AS3:
if (e.currentTarget.currentLabel == "red")
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 22.05.2012, 23:36
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 5  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Цитата:
Сообщение от sanchoys14 Посмотреть сообщение
или лучше вообше готовый код дать?
И че я сразу об этом не подумал)
__________________
adobe AS3 manual

Старый 23.05.2012, 14:27
sanchoys14 вне форума Посмотреть профиль Отправить личное сообщение для sanchoys14 Найти все сообщения от sanchoys14
  № 6  
Ответить с цитированием
sanchoys14

Регистрация: May 2012
Сообщений: 18
Цитата:
Сообщение от -De- Посмотреть сообщение
Вы каждый кадр рандомно меняете индекс o. И при клике проверяете на попадание только один круг с этим рандомным индексом.
Я бы советовал подписать на клик все 6 ламп, и тогда в условии можно оставить только
Код AS3:
if (e.currentTarget.currentLabel == "red")
Спасибо за совет, всё работает, но этот способ не совсем рациональный, я бы даже сказал вообще не рациональный. Может можна как-нибуть запихнуть все клипы(lampa1 - lampa6) в масив, а потом отслеживать клики по нему, или ешё какой-то вариант. Чтобы без личшего кода. Кстате вот код этой игры на AS2:
Код AS1/AS2:
onClipEvent (load) {
 timeBetweenFoxes = 2000;
 nextFox = getTimer() + timeBetweenFoxes;
 score = 0; 
 numFoxes = 0;
 }
onClipEvent (enterFrame) {
 if (getTimerO >= nextFox) {
 timeBetweenFoxes -= 10;
 if (timeBetweenFoxes < 1000) { 
 _root.gotoAndPlay("End") ;
 } else {
 numFoxes++; _root.showScore = score + "/" + numFoxes;
 while (true) {
 fox = Int (Math.Random0*18) ;
 if (_root["fox"+fox]._currentFrame == 1) break;
 _root ["fox"+fox].gotoAndPlay ("popup") ;
 nextFox = getTimerO + timeBetweenFoxes;
 }
}
}
onClipEvent (mouseDown) {
 х = _root. _xmouse;
 у = _root. _ymouse;
 for (i=0;i<18;i++) {
 if (_root["fox"+i]._currentFrame > 24) {
 if (_root["fox"+i].hitTest(x,у,false)) {
 _root["fox"+i].gotoAndPlay("whack");
 score++;
 _root.showScore = score + "/" + numFoxes;
} 
}
}
}
}

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

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

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


 


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


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