PDA

Просмотр полной версии : AS2->AS3 migration: работа совместно с Flash IDE


MyXus
31.10.2006, 13:16
Хелпов по кодингу предостаточно, а вот по самым простым вещам ответы - непонятно где искать..

Для начала попытался перевести простенький fla с 8 на 9 версию. Проблемы:
1. При попытке привязать класс к мувиклипу в библиотеке флеш ругается: "ActionScript 2.0 class scripts may only define class or interface constructs" (а там - пакадж). Это значит что работать как раньше принципиально невозможно?
2. Метод AttachMovie - полностью dedicated. Рекомменудют addChild(), но не указано каким методом теперь таскать мувы из библиотеки. Или библиотеки вообще больше нет? А со шрифтами тогда как быть?
3. Конструкция mc.__proto__ = TClass.prototype;
mc.constructor = TClass;
mc.constructor.apply(mc);еще актуальна? Или как-то по другому теперь всё работает?

etc
31.10.2006, 13:29
1. Это я не знаю, какой класс ты туда привязываешь. AS2 класс нужно переписать на AS3 :D
2. У тебя в либе навешаны классы, собственно, когда ты вызываешь new AnyClass() — это и есть аттач. Никакого linkage id не нужно.
3. Нет, уже неактуальна.

MyXus
31.10.2006, 13:36
Почти всё понял, спасибо -)

MyXus
31.10.2006, 16:41
Прошу прощения, совершенно загнался :-(
АС-прожект во флеше работает, но если сопоставить мувику из библиотеки класс (например Classes.TMenuItems), при testMovie всё выглядит нормально, но флешовый компилер ругается: "ReferenceError: Error #1074: Illegal write to read-only property Classes::TMenuItems on global. at global$init()".
В гугл лазил, проблема встречается, описание решения - нет.

miramax
31.10.2006, 16:45
выкладывай класс
Classes.TMenuItems

etc
31.10.2006, 16:49
Да, показывай, что ты там накодил :)

з.Ы. А почему у тебя имена классов начинаются на «T»?

MyXus
31.10.2006, 16:53
package Classes
{
import flash.display.*;

public class TMenuItems extends Sprite {

public function TMenuItems() {
super();
this.graphics.lineStyle(1, 0);
this.graphics.moveTo(100,100);
this.graphics.lineTo(200,250);
};

};

}Структура размещения файлов
#..#
- #папка Classes#
--- TMenuItems.as
--- my_project.fla
- FPolis_AS3.as (document class)

При этом мувик в либе - самый простой.

package {
import flash.display.*;
import Classes.*;
import flash.events.Event;

public class FPolis_AS3 extends Sprite
{
public function FPolis_AS3() {
super();

var mc:TMenuItems = new TMenuItems();
this.addChild(mc);
}
}
} На всякий случай - это код документ_класса.

MyXus
31.10.2006, 16:57
А почему у тебя имена классов начинаются на «T»?Это с С++ привычка -)
Все классы в вижл_студио начинаются на T, чтобы отличать их от структур и еще для чего-то, не помню.
Еще была практика всем переменным - членам класса давать префикс 'm_', чтоб отличать их от локальных переменных функций - методов класса. А еще давать префикс 'p' указателям - тоже оч полезная практика... для "сей" :-)

miramax
31.10.2006, 16:58
А зачем привязывать программный рисунок к символу в билиотеке? У меня всё работает. Может быть ты что-то в символе написал? какой-то код? Хотя тогда c addFrameScript ошибки возникнут....

etc
31.10.2006, 16:58
А почему TMenuItems не лежит в папке Classes?

MyXus
31.10.2006, 17:01
А почему TMenuItems не лежит в папке Classes?Лежит, просто я - забыл я отформатировал пост пробелами сначала - они сгорели :-)
Если б не лежало в папке - компилер бы ругался попроще -)
да и компилер эклипса ругался бы в первую очередь. А он молчит.

MyXus
31.10.2006, 17:02
А зачем привязывать программный рисунок к символу в билиотеке? У меня всё работает. Может быть ты что-то в символе написал? какой-то код? Хотя тогда c addFrameScript ошибки возникнут....символ абсолютно пустой. просто квадратик, сэкспоритрованный в библиотеку. Нужно это для теста... Потом я хочу рпоект перетащить с AS2 на AS3, а там куча графики.

miramax
31.10.2006, 17:04
фла должен лежать в папке вместе спапкой Classes, а не в папке Сlasses

etc
31.10.2006, 17:04
А почему он у тебя расширяет Sprite, а не MovieClip?

miramax, нет.

miramax
31.10.2006, 17:06
А почему он у тебя расширяет Sprite, а не MovieClip?

разницы, в данном случае, нет

MyXus
31.10.2006, 17:08
в данном случае разницы со спрайтом действительно нет
вот архив проекта:
www.myxus.nm.ru/4/Fpolis_as3.rar

etc
31.10.2006, 17:12
У меня работает нормально.

miramax
31.10.2006, 17:13
Борррр.... Не знаю, в флеш 9 всё компилится :)
Ты во флексе это делал?

MyXus
31.10.2006, 17:17
Нет.. Flash 9 public alpha...
Вот чорд..

То есть код то я набираю во флекс-билдер под эклипс. Но оно молчит. А вот флеш - ругается..

etc
31.10.2006, 17:24
Что, при TestMovie или Publish? Хотя, я и так и так пробовал, всё пашет.
Кодировки в настройках правильные?

MyXus
31.10.2006, 17:25
при тест movie.
Визуально - всё в порядке. Меня просто нервирует ошибка компилятора флеша.
А что за кодировки? Да и какое они имеют значение - буквы то все английские.. ?

MyXus
31.10.2006, 17:26
Бл#, нашел!
В настройках AS3 в самом флеше по привычке прописал папку './Classes/'. Она всё и портила. Вот гадость :-(((