Показать сообщение отдельно
Старый 10.10.2013, 23:41
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Post Недоступность текстфилда в многофреймовом мувиклипе.

Воссоздаю игру Minesweeper, из книжки Эмануэля Феронато, по наводке KumoKairo.
Код класса Main скопирован из исходника, так что моей ошибки набора здесь нет.

Код использует созданный в библиотеке мувиклип tile_movieclip, пролинкованный галочкой к одноименному классу, который содержит 4 фрэйма.
На каждом фрэйме находится одно из состояний квадратика: неоткрыт, открыт с числом, взрыв, флаг.

Второй фрейм содержит несгруппированный, несимвольный квадрат, поверх которого находится динамический текстфилд:
Нажмите на изображение для увеличения
Название: Snap2.png
Просмотров: 148
Размер:	57.1 Кб
ID:	30092

И вот с ним возникает проблема.
В одной из функций основного документ-класса к нему идет обращение вот так:

Код AS3:
 
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();
						}
				//...
			}
		}
     }
}
То есть через конструкцию
Код AS3:
clicked_tile.tile_text.text
Запуск проекта проходит без ошибок.
Но когда я нажимаю мышкой на квадратик такого типа, то это приводит к ошибке:
Цитата:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Main/::onTileClicked()
Если протрейсить вот так:
Код AS3:
trace("clicked_tile.tile_text == ", clicked_tile.tile_text)
То получим:
Цитата:
clicked_tile.tile_text == null
То есть, по каким-то причинам, этот текстфилд равен нулл? Но почему?
Или может быть, тут есть некий трюк, не работающий для версии Flash CS3.