Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.07.2007, 19:26
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 1  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
По умолчанию Eclipse и FlashDevelop - код один, результат разный!

Здравствуйте дорогие флешеры.

Доканало меня окончательно пользование Eclipse на ноутбуке с 256Mb озу, и решил я переползать с FDT на FlashDevelop.

Для начала взял небольшой проектик, перенес его в FlashDevelop. Проект - просто тестовый, подключает один внешний swf, и печатает список всех мувиков. Такой же, как обсуждался здесь.

Так вот, данный проект, скомпиленый в Eclipse, выдает такой список мувиков

Код:
First run giperTrace
_level0
_level0.resource
_level0.resource.mcCellBall
_level0.resource.mcCellEnemyPlayer
_level0.resource.mcCellCommandPlayer
Second run giperTrace
_level0
_level0.resource
_level0.resource.commandplayer0
_level0.resource.mcCellBall
_level0.resource.mcCellEnemyPlayer
_level0.resource.mcCellCommandPlayer
А скомпиленый в FlashDevelop выдает такой список

Код:
First run giperTrace
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
Second run giperTrace
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
Распечатка мувиков делается через метод giperTrace, его код дан в этом посте. Вызов пробую делать и как giperTrace(_root) и как giperTrace(_level0), всеравно список мувиков получить не могу. Видимо в Eclipse, в результате компиляции и выполнения AS2 кода, получаются мувики, а во FlashDevelop получается объекты.


Напоминаю - весь код проекта в Eclipse и FlashDevelop полностью идентичен.


Строка компилирования в Eclipse

C:\TOOLS\win\MTASC_compiler\mtasc.exe -swf C:\WORK\ECLIPSE_WORKSPACE\flashos\deploy\application.swf -cp C:\WORK\ECLIPSE_WORKSPACE\flashos\src -main application.as -trace Flashout.traceReplacer -header 800:600:20 -cp C:\TOOLS\win\MTASC_class


Строка компилирования в FlashDevelop

C:\Program Files\FlashDevelop\tools\fdbuild\fdbuild.exe "C:\WORK\ECLIPSE_WORKSPACE\flashos_fd\flashos\flashos.fdp" -cp "C:\TOOLS\win\MTASC_class"


Подозреваю, что различие в результатах компиляции идет из-за каких-то настроек FlashDevelop. Поковырял, поменял некоторые, результата не увидел, поставил на место.

Вопрос - где чего во FlashDevelop надо крутануть, чтобы получить результат, идентичный в Eclipse?
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

Старый 18.07.2007, 00:38
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Попробывать указать все пути к классам. В строке Eclipse есть параметр "-cp C:\WORK\ECLIPSE_WORKSPACE\flashos\src" которого нет в FD.
Надо зайти в свойства меню Project, вкладка Classpaths и посмотреть какие пути стоят для классов проекта и глобальные пути.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.07.2007, 03:20
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 3  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
В Eclipse путь C:\WORK\ECLIPSE_WORKSPACE\flashos\src - это путь к файлам классов проекта (грубо говоря к рабочей директории c AS2 стриптами).

Для FlashDevelop попробовал добавить путь к директории проекта, в которой лежат классы. (Думаю что для FlashDevelop это делать бессмысленно, но попробовал). Результат тот же.

Мужет быть это из-за того, что FlashDevelop как-то определяет extend-информацию для класса, и принудительно делает его объектом, даже если используется хак для связывания с мувиклипом? Если находясь на закладке с любым as-кодом, в панеле навигации переключиться на закладку ActionScript, то для любого as-кода в отображаемом дереве будет раздел Extends, в котором находится object.as следующего содержания

Код:
intrinsic class Object
{
	function Object();
	function watch(name:String, callback:Function, userData:Object):Boolean;
	function unwatch(name:String):Boolean;
	function addProperty(name:String, getter:Function, setter:Function):Boolean;
	function toString():String;
	function valueOf():Object;
	function hasOwnProperty(name:String):Boolean;
	function isPrototypeOf(theClass:Object):Boolean;
	function isPropertyEnumerable(name:String):Boolean;
	function toLocaleString():String;
	static function registerClass(name:String, theClass:Function):Boolean;
	static var prototype:Object;
	var constructor:Object;
	var __proto__:Object;
}
Это показывается содержимое файла Object.as, который находится в библиотеке стандартных flash классов. Этот файл виден в extends для каждого класса. Может в этом вся загвоздка? Может можно extends object как-то убрать, или заменить extends на MovieClip? Как это правильно сделать?
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

Старый 18.07.2007, 04:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Object.as в Extends у меня виден только если не задан extends или там Object, а так все гуд. То есть я напишу
class NewClass extends MovieClip
то в Extends у меня будет указан MovieClip
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.07.2007, 17:20
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 5  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
Блин, ну я уже не знаю что делать. Начались тупые пляски с бубном. Упростил пример, убрал лишнее, оставил только задействованый код. Выкладываю сюда.

Уважаемый iNils, не могли бы вы открыть проект в вашем FlashDevelop-е, и сказать какой лог в результате у вас?


Обратите внимание на то, что в giperTraceRecurse() условие

Код:
if(typeof(o)!='movieclip' || _checked_[o._target] ) return;
не даст печатать путь для объектов, не являющихся мувиклипами. Следовательно, появление строк [object Object] - это перечисление таких странных мувиков, у которых отсутсвует this?


Так же обратите внимание, что в onLoadResourceMovie() после выполнения в команды

Код:
// Копирование мувиклипа из ресурсов
scopeRef.resource.mcCellCommandPlayer.duplicateMovieClip("commandplayer0",15);
количество строк [object Object] в логе на единицу больше. То есть функция duplicateMovieClip() нормально скопировала мувиклип (а не объект). Однако, для этого мувика размещение всеравно неопределено раз вместо пути печатается [object Object].


Еще один момент - если скомпилированный swf открыть во Flash IDE и посмотреть Object List, то все мувиклипы видны (оставил в листинге только мувики)

Код:
Level #0: // кстати _level0 то же мувиклип, см. список мувиков в первом посте
Movie Clip: Frame=1 Target="_level0.resource"
Movie Clip: Frame=1 Target="_level0.resource.mcCellCommandPlayer"
Movie Clip: Frame=1 Target="_level0.resource.mcCellEnemyPlayer"
Movie Clip: Frame=1 Target="_level0.resource.mcCellBall"
Movie Clip: Frame=1 Target="_level0.resource.commandplayer0"
То есть возможно, все мувики нормально создаются, а метод giperTrace() в FlashDevelop по каким-то причинам не может нормально распечатать их местоположение. Да, видимо трабла в giperTrace()... Но почему тогда в Eclipse этот код работает нормально? И как его исправить?
Вложения
Тип файла: zip flashos.zip (12.4 Кб, 89 просмотров)
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

Старый 18.07.2007, 17:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Это какие то проблемы класса FlashOut. Вместо trace(o) я поставил trace("+" + o) и сразу же трейсе пошли мувиклипы.

UPD. Точно, в FlashOut один метод, который делает msg.toString()... Это и создает проблемы.
Если в самом флеше написать
Код:
trace (_root.toString ());
то результатом будет [object Object]
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 18.07.2007 в 18:02.
Старый 18.07.2007, 18:48
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 7  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Тогда можно такую приставку приделать:
Код:
MovieClip.prototype.toString = function(){ return this._target; }
trace (_root.toString ());
Это, правда, вернет в слеш-нотации.

Старый 18.07.2007, 19:11
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Можно определять по typeof является ли объект мувиклипом и toString для него убирать.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.07.2007, 23:05
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 9  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
Вот жеж, никогда бы этот вопрос не решил, спасибо!

Метод исправления выбрал такой - в каталоге куда установлен FlashDevelop находим подкаталог Library\org\flashdevelop\utils. Там будет лежать файл FlashOut.as. Заменяем его содержимое на

Код:
class org.flashdevelop.utils.FlashOut
{
 static function trace(msg:Object)
  {
   if(typeof(msg)!='movieclip')
    fscommand("trace", msg.toString());
   else
    fscommand("trace", msg);
  }
}
И трассировка начинает работать правильно.
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru

Старый 07.08.2007, 00:16
Racer вне форума Посмотреть профиль Отправить личное сообщение для Racer Посетить домашнюю страницу Racer Найти все сообщения от Racer
  № 10  
Ответить с цитированием
Racer
 
Аватар для Racer

Регистрация: Feb 2002
Адрес: Moscow
Сообщений: 475
Отправить сообщение для Racer с помощью Skype™
2 iNils и xintrea:
Друзья! Поделитесь Snippetами для Flashdevelop!
__________________
Однозначно!

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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