Воссоздаю игру Minesweeper, из книжки Эмануэля Феронато, по наводке
KumoKairo.
Код класса Main скопирован из исходника, так что моей ошибки набора здесь нет.
Код использует созданный в библиотеке мувиклип tile_movieclip, пролинкованный галочкой к одноименному классу, который содержит 4 фрэйма.
На каждом фрэйме находится одно из состояний квадратика: неоткрыт, открыт с числом, взрыв, флаг.
Второй фрейм содержит несгруппированный, несимвольный квадрат, поверх которого находится динамический текстфилд:
И вот с ним возникает проблема.
В одной из функций основного документ-класса к нему идет обращение вот так:
Код 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.