![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Apr 2013
Сообщений: 32
|
Здравствуйте. Решил создать мини игру на flash(actionscript3), как рас и поучить. В игре есть 3 цели, при нажатии на кнопку появляется кружок(выстрел) в рандомном месте, если попал в центр +100 очков и т.д. Как сделать что б можно было нажать на кнопку "выстрел" только 5-ть рас? Общий подсчет количество очков выводится на экран, только они налаживаются друг на друга и после нескольких выстрелов уже не видно результат, как сделать что б они не налаживались друг на друга? За код прошу сильно не ругать, только приступил к изучению
but - кнопка при нажатии на которую все происходит ov - выстрел(точка которая перемещается и при попадание в цель +очки) target1, target2, target3 - цель. import flash.events.MouseEvent; var GameScore:Number = 0; var point:int; var onClickButton:Number = 5; but.addEventListener(MouseEvent.CLICK, onBUTClick); function onBUTClick(e:MouseEvent):void{ ov.visible = true; ov.x = Math.floor(Math.random()*550); ov.y = Math.floor(Math.random()*300); if(ov.hitTestObject(target3)) { point += 100; } else if(ov.hitTestObject(target2)) { point += 50; } else if(ov.hitTestObject(target)) { point += 10; } import flash.text.TextField; var t:TextField = new TextField(); GameScore += point; t.text = String(GameScore); addChild(t); } |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 70
|
Создайте переменную, например,
. Она будет хранить количество нажатий на мышку. После каждого нажатия увеличивайте её на 1 и проверяйте, дошла ли она до нужного вам значения или еще нет. Если дошла - удаляйте слушатель щелчка мыши.
|
|
|||||
|
Регистрация: Apr 2013
Сообщений: 32
|
Цитата:
import flash.events.MouseEvent; var GameScore:Number = 0; but.addEventListener(MouseEvent.CLICK, onBUTClick); var buttonClicks: uint = 0; // счетчик import flash.text.TextField; var t:TextField = new TextField(); addChildAt(t,0); function onBUTClick(e:MouseEvent):void{ buttonClicks += 1; // при нажати кнопки +1 trace(buttonClicks); // просмотр, работает ли ov.visible = true; ov.x = Math.floor(Math.random()*550); ov.y = Math.floor(Math.random()*300); if(ov.hitTestObject(target3)) { GameScore += 100; } else if(ov.hitTestObject(target2)) { GameScore += 50; } else if(ov.hitTestObject(target)) { GameScore += 10; } t.text = GameScore.toString(); } |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 70
|
Цитата:
trace() - это вывод информации отладчика. никакого воздействия на ход программы это не окажет. Далее: увеличение счетчика нужно сделать в конце функции - когда будут выполнены все действия по нажатию на кнопку. В противном случае кнопка может отключиться раньше, чем это нужно. В конце функции, после того как увеличите счетчик, добавьте: Это удалит слушатель события и кнопка больше не будет реагировать на нажатие. |
|
|||||
|
Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
и будет висеть на сцене не к селу не к городу ? ))
|
|
|||||
|
Регистрация: Aug 2012
Сообщений: 70
|
С тем, как убрать кнопку со сцены, автор, я думаю, уже знаком. А вот слушатель в любом случае нужно отключать, после того, как кнопка перестанет быть нужна.
|
|
|||||
|
Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
|
|
|||||
|
Регистрация: Apr 2013
Сообщений: 32
|
Все работает, всем огромное спасибо!
А как теперь сделать так что б количество выстрелов(5) выводилось например в верхнем правом углу? import flash.events.MouseEvent; var GameScore:Number = 0; but.addEventListener(MouseEvent.CLICK, onBUTClick); var count:Number = 5; //количество выстрелов import flash.text.TextField; var t:TextField = new TextField(); addChild(t); //для вывода выстрелов import flash.text.TextField; var t1:TextField = new TextField(); addChild(t1); stop(); function onBUTClick(e:MouseEvent):void{ count -= 1; //каждый рас -1 if(count > 0) { ov.x = Math.floor(Math.random()*550); ov.y = Math.floor(Math.random()*300); } else if (count == 0) { but.removeEventListener(MouseEvent.CLICK, onBUTClick); ov.visible = false; } trace(count); colide(); setText(GameScore.toString()); setText1(count.toString());// вызов функции для выстрелов } function setText(txt:String) { t.text = txt; } //функция для вывода выстрелов на экран function setText1(txt:String) { t1.text = txt; } function colide() { if(ov.hitTestObject(target3)) { GameScore += 100; } else if(ov.hitTestObject(target2)) { GameScore += 50; } else if(ov.hitTestObject(target)) { GameScore += 10; } } Все, понял! Нужно было: |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|