2013-11-23 7 views
0

Я следую книге «Разработка флеш-игр на примере», и сейчас я нахожусь в главе 2, в игре «Сапер». Проблема, с которой я столкнулся, - это после того, как я начну вводить код, чтобы сделать отображение плитки, и у меня появились следующие ошибки: 1046: Type was not found or was not a compile-time constant: tile_movieclip. и 1180: Call to a possibly undefined method tile_movieclip.. линии, где они оказались, соответственно:1046: Тип не был найден или не был константой времени компиляции: tile_movieclip

private var tile:tile_movieclip;

и

tile = new tile_movieclip();

Я не имею ни малейшего понятия о том, почему он не работает. В книге ничего не говорится об ошибке, и я уже пробовал копировать/вставлять код из книги, но он тоже не работал. В настоящее время я использую Adobe Flash CS4.

Текущий исходный код: http://pastebin.com/spUzPGBx. У него могут быть другие ошибки, так как я все еще отлаживал их, когда обнаружил эту ошибку.

ответ

2

Для того, что код для работы, необходимо 1 из 2 возможных вещей:

1 - класс с именем tile_movieclip

2 - символ библиотеки, который называется tile_movieclip и связи, установленный на его свойства панель, которая будет автоматически создавать класс с именем tile_movieclip при компиляции.

Я собираюсь угадать, что книга, которую вы используете, имеет файл .fla, который соответствует этому примеру.

ОБНОВЛЕНИЕ - я только что загрузил .pdf этой книги и на странице 22 описывает создание этого символа в вашей библиотеке и установление связи.

Итак ... Я думаю, мы сможем рассмотреть эту тайну.

+0

Извините за поздний ответ, но спасибо! Хотя я во второй игре, Minesweeper, ваше решение сработало. Page 56 говорит, что я должен назвать символ tile_movieclip и сделать его экспортируемым actioncript с тем же именем. Изменил его, и теперь он работает отлично. Спасибо огромное! – Gus

1

Это означает, что вспышка думает, что класс tile_movieclip не существует. Если он действительно существует, значит, flash не знает, как получить к нему доступ.

Существует множество возможных причин, по которым это происходит в зависимости от структуры вашего проекта. Если вы пытаетесь получить доступ к внешней библиотеке, элементу библиотеки, некоторому классу в своем проекте и т. Д.

Укажите, пожалуйста, в своем вопросе, где, по вашему мнению, находится класс tile_movieclip, и я смогу предоставить более конкретную информацию ответ.

В качестве примечания в AS3 (и, вероятно, для всех языков программирования) это стандарт для обозначения классов с буквой в верхнем регистре, поэтому легче различать vars и классы. В AS3, в частности, sprite - это var, а Sprite - это класс. AS3 - чувствительный к регистру язык.

+0

Я не уверен в этом. Я не использую какие-либо внешние библиотеки или что-то еще, и весь код находится в моем файле Main.as (я знаю, что это плохая практика, но это так, как это делает книга). В книге не упоминается необходимость какой-либо пользовательской библиотеки или что-то в этом роде. Я думал, что это встроенная функция вспышки. Нужно ли мне импортировать что-нибудь для этого? Я уже пробовал импортировать flash.display.Movieclip', но это не имело никакого значения. Кроме того, спасибо за отзыв на чувствительный к корпусу. – Gus

+1

Хорошо, тогда в вашем проекте чего-то не хватает. 'var tile: tile_movieclip;' означает, что вы создаете var типа 'tile_movieclip', который является классом. Если у вас нет этого класса в вашем проекте, он никогда не будет работать. Вы уверены, что этот класс не создан в предыдущей главе книги? – Pier

+1

tile_movieclip должно быть написано «Tile_movieclip» (поскольку классы должны упоминаться в кепках) и должен продлить MovieClip. private var tile: Tile_movieclip/private var tile: MovieClip. Убедитесь, что путь/пакет верны, импортированы в указанном классе и расположены так, как следует в проекте. Это полезно? – tatactic