|
|
|||||
Регистрация: May 2012
Сообщений: 18
|
Не отслеживаются клики
Вот решил создать простенькую игру для практики на 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); } } Так вот дело в том, что она почти не отслеживает клики. Из 10 кликов по шарикам может один и заметит. В чём проблема? И вообще, как бы вы сделали это, потому что мой подход наверно совершенно не правельный)? |
|
|||||
сделай так
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. |
|
|||||
Регистрация: May 2012
Сообщений: 18
|
Попробовал так. Мне это ни о чём не говорит) Нельзя ли как нибуть ещё подтолкнуть меня на правильный путь, или лучше вообше готовый код дать?
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Вы каждый кадр рандомно меняете индекс o. И при клике проверяете на попадание только один круг с этим рандомным индексом.
Я бы советовал подписать на клик все 6 ламп, и тогда в условии можно оставить только
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
__________________
adobe AS3 manual |
|
|||||
Регистрация: May 2012
Сообщений: 18
|
Цитата:
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. |
|
« Предыдущая тема | Следующая тема » |
|
|