|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Недоступность текстфилда в многофреймовом мувиклипе.
Воссоздаю игру Minesweeper, из книжки Эмануэля Феронато, по наводке KumoKairo.
Код класса Main скопирован из исходника, так что моей ошибки набора здесь нет. Код использует созданный в библиотеке мувиклип tile_movieclip, пролинкованный галочкой к одноименному классу, который содержит 4 фрэйма. На каждом фрэйме находится одно из состояний квадратика: неоткрыт, открыт с числом, взрыв, флаг. Второй фрейм содержит несгруппированный, несимвольный квадрат, поверх которого находится динамический текстфилд: И вот с ним возникает проблема. В одной из функций основного документ-класса к нему идет обращение вот так: package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.utils.Timer; public class Main extends Sprite { //... private var game_container:Sprite = new Sprite; private var tile:tile_movieclip; //... public function Main() { //... } private function onTileClicked(e:MouseEvent):void { if (! gameOver) { var clicked_tile:tile_movieclip = e.currentTarget as tile_movieclip; //... if (clickedValue > 0 && clickedValue < 9) { clicked_tile.gotoAndStop(2); clicked_tile.tile_text.text = clickedValue.toString(); } //... } } } } Но когда я нажимаю мышкой на квадратик такого типа, то это приводит к ошибке: Цитата:
То получим: Цитата:
Или может быть, тут есть некий трюк, не работающий для версии Flash CS3. |
|
|||||
Естественно. Если вы находитесь на 1ом кадре, и пыьтаетесь что то сделать с текстом - которого там нет, он есть только на втором, то вот и обшибка. Сначала надо перейти на второй, принудительно - gotoAndStop(2)
__________________
Марк Tween |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
|
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
КорДум, благодарю за идею, несколько позже проверю.
Добавлено через 9 часов 30 минут Насколько я понял, нужно было сделать так: //... if (clickedValue > 0 && clickedValue<9) { clicked_tile.gotoAndStop(2); clicked_tile.addEventListener(Event.ENTER_FRAME, readText); //... } private function readText(e:Event) { trace("ENTERFRAME!"); trace("e.currentTarget == ", e.currentTarget, " name = ", e.currentTarget.name ); trace("e.target == ", e.target, " name = ", e.target.name); trace("e.currentTarget.currentFrame == ", e.currentTarget.currentFrame); e.currentTarget.removeEventListener(Event.ENTER_FRAME, readText); e.currentTarget.tile_text.text = "3!"; } Цитата:
Последний раз редактировалось Fogflasher; 11.10.2013 в 22:53. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Дайте ссылку на оригинальню книжку, но уже по фрагментам видно, что там что-то феерическое написано.
Хотя Феронато иногда что-то даже нормальное писал.
__________________
Отряд Котовскага |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
|
Часовой пояс GMT +4, время: 17:49. |
|
« Предыдущая тема | Следующая тема » |
Теги |
Error #1009 , feronato , game , minesweeper |
|
|