Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   AS2->AS3 migration: работа совместно с Flash IDE (http://www.flasher.ru/forum/showthread.php?t=87193)

MyXus 31.10.2006 13:16

AS2->AS3 migration: работа совместно с Flash IDE
 
Хелпов по кодингу предостаточно, а вот по самым простым вещам ответы - непонятно где искать..

Для начала попытался перевести простенький 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

Цитата:

Сообщение от __etc
А почему у тебя имена классов начинаются на «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

Цитата:

Сообщение от __etc
А почему TMenuItems не лежит в папке Classes?

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

MyXus 31.10.2006 17:02

Цитата:

Сообщение от miramax
А зачем привязывать программный рисунок к символу в билиотеке? У меня всё работает. Может быть ты что-то в символе написал? какой-то код? Хотя тогда 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

Цитата:

Сообщение от __etc
А почему он у тебя расширяет 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/'. Она всё и портила. Вот гадость :-(((


Часовой пояс GMT +4, время: 17:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.