PDA

Просмотр полной версии : Flash CS3 - .fla не видит внешних классов


danhuu
24.06.2007, 02:07
Странности, или я чего-то упустил. Есть .fla файл, в том же каталоге класс. Если он прописан в поле "document class", всё работает, если нет - в упор не видится (не компилится). Никаких ошибок не выдаёт. В опциях AS3 стоит path . и встроенные (как изначально было, я вообще их не трогал).
В проекте классов будет явно больше одного :). И что теперь, какой-нибудь прописать в поле "document class", а остальные в него импортировать?
Забавно, но замечательный пример с игрушкой про астероиды с этого форума компилится как миленький при тех же условиях.

etc
24.06.2007, 13:40
Собственно, в игре часть кода написана в кадрах. Merlin в то время только изучал AS3 и по старинке делал. Писать код в кадрах нужно отучаться.

danhuu
25.06.2007, 01:05
Это, конечно, всё хорошо, но всё-таки: какой-нибудь класс необходимо прописывать как document class, или можно, как пишут в хелпе (а у меня, значит, глюк в программе)?

etc
25.06.2007, 01:07
Если в хелпе показан целый класс, то это и есть Document class.

danhuu
25.06.2007, 13:23
А все остальные - в него импортировать?

etc
25.06.2007, 20:55
Не понял вопроса. Какие остальные?

silin
26.06.2007, 00:33
не вижу никакой беды если фла будет лежать там же документ класс, остальные(классы) ведь никак к нему не привязаны или у у автора как-то привязались?, тогда нужно подробнее описание грабель., ибо важно..

danhuu
27.06.2007, 13:19
Подробное описание грабель: если код написан в файле, прописанном как Document class, всё ОК. Если тот же код написан в любом другом файле в той же директории, где лежит .fla (или если просто не писать ничего в поле Document class), то этот код не компилируется. Т.е., непонятно, как присобачивать к .fla больше одного класса. Или в Document class необходимо импортировать все другие классы?
Далее, в хелпе, а равно и в обзорах, пишется, что можно прописать какой-нить класс как Document class, а получается, что это необходимо.
Ещё далее, в примере с астероидной игрой, если открыть game.fla, то поле Document class там пустое, при этом всё прекрасно компилируется. То, что в этом проекте несколько строчек написано в кадрах, по-моему, не имеет отношения к читабельности классов.
Ну и наконец, классы (файлы классов, лежащие в той же директории, где и .fla) равноправны или есть иерархия?

etc
27.06.2007, 13:25
Так, неработающий пример в студию. Гадать уже надоело.

danhuu
27.06.2007, 21:22
Так, неработающий пример в студию. Гадать уже надоело.
Не могу ничего загрузить! Всё время пишет в окне "Управление вложениями": "загрузка файла прошла неудачно". Это zip в 15кб. Что дома с модема, что с работы через LAN.
Описываю:
1. создаю файл test.fla, в нём текстовое поле с instance name - tf
2. в той же директории создаю файл Test.as c таким кодом:
package
{
import flash.display.Sprite
import flash.text.*;
public class Test extends Sprite
{
public function Test():void
{
tf.text ="Hello!";
}
}
}
3. компилирую, текста нет
4. прописываю в test.fla в поле Document class - Test
5. компилирую, текст виден
Получается, что объявление класса в поле Document class обязательно, а в хелпах и в обзорах пишут, что нет, типа это можно сделать, но необязательно.
На самом деле это некритично, наверное, ведь должен быть какой-то "главный" класс, а он по мере необходимости будет обращаться к другим. Но если вы откроете (извините, задолбал уже) game.fla из выложенной здесь на форуме игрушки про астероиды, то поле Document class там пусто, а игра компилируется и работает. Почему, я не могу понять, и это раздражает.

etc
27.06.2007, 22:53
3. А откуда он будет, собственно? Ну лежит себе файл и лежит, флеш о нем ничего не знает совершенно;
5. Я уже дал ответ, почему там все работает. Потому что во fla, в кадрах написан код, который использует эти самые файлы с классами. Так яснее? У тебя же нет никакого кода, который использует класс Test.

Если загрузка на форуме не работает, то можно чуть напрячь мозг и закинуть файл на файлопомойку. А если ещё чуть-чуть напрячь, то тема бы уже давно себя исчерпала, а не мусолилась третий день.

silin
27.06.2007, 23:02
не совсем таки ясно, что же непонятно:
документ класс можно назначить, а можно и не назначать (компилятор его сам тогда создаст)
такой еще пример, может прояснит что
в твоем примере в первом фрейме пишем
tf.appendText("Hello timeLine!\n");
а в документ классе
package
{
import flash.display.*;
import flash.text.*;

public class Test extends MovieClip
{
public function Test():void
{
tf.appendText("Hello documentClass!\n");
}
}
}
получим
Hello documentClass!
Hello timeLine!
угадай теперь, что получим, убрав объявление document class..:)
или наоборот строчку из фрейма..

danhuu
28.06.2007, 10:14
Большое спасибо всем ответившим!
А если ещё чуть-чуть напрячь, то тема бы уже давно себя исчерпала, а не мусолилась третий день.
Я неделю как поставил 9-й Флэш и узнал о существовании языка AS3 и 5 дней как ему учусь, а до этого год вообще ничего не программировал и полтора - во Флэше (на AS1 (по 20-30 строчек, в кадре) ;)
Сейчас немного улеглось в голове и этот вопрос самому кажется из серии "Ма-а-ма, а что такое мо-о-ре?" Но, если б не ваша помощь, укладывалось бы дольше!