Ошибка видна в браузере, но не во Flash CS5 - PullRequest
1 голос
/ 27 января 2011

Я вырываю волосы. У меня есть эта чрезвычайно странная ошибка:

У меня есть собственный класс "StagedSprite", который расширяет Sprite. Его цель - автоматически выравниваться по границе сцены при каждом изменении размера сцены.

СЕЙЧАС, я загружаю PNG-файл "ybmp" (Bitmap) и добавляю его как дочерний элемент в "loadingIcon" (StagedSprite). В Flash CS5 PNG правильно отображается на экране (тоже выровнено). Но если я опубликую и запускаю SWF из Firefox или IE, PNG НЕ ПОКАЗывается!

Что даже БОЛЬШЕ странно то, что выдает следующий код:

//var ybmp:Bitmap = the loaded bitmap
//loadingIcon is a StagedSprite
loadingIcon.addChild(ybmp);
trace(ybmp.bitmapData.width,ybmp.bitmapData.height);
trace(ybmp.width,ybmp.height);
trace(loadingIcon.width,loadingIcon.height,loadingIcon.getChildAt(0),loadingIcon.stage);

Я поместил результаты «trace» в TextField на экран. В CS5 приведенный выше код выдает:

215 200
215 200
215 200 [object Bitmap] [object Stage]

В Firefox и IE приведенный выше код выдает:

215 200
215 200
0 0 [object Bitmap] [object Stage]

Что это такое?!? В браузерах растровое изображение добавляется в «loadingIcon», но «loadingIcon» по-прежнему имеет нулевую ширину и высоту. ?!?!?

Я мог бы также вставить сюда код StagedSprite, но он немного большой и не имеет свойства scrollRect. В конце концов, что может быть причиной его запуска в инструменте разработки Flash, но НЕ в браузерах? .. *

Заранее большое спасибо,

Bill

РЕДАКТИРОВАТЬ: Боже мой По какой-то еще невероятной причине для loadIcon были настроены scaleX и scaleY на 0. Но это ONLY в версии для браузера. В моем коде у меня ничего не было, установив его scaleX или scaleY на что-либо, предполагая, что он должен быть установлен в 1 по умолчанию.

У кого-нибудь есть ЛЮБЫЕ предложения, почему в браузерах мой "loadingIcon" имел бы нулевой масштаб, но не в CS5? В обоих случаях это один и тот же код, я проверил это 1000 раз ...

1 Ответ

1 голос
/ 27 января 2011

Хорошо, я нашел его и отправил сюда, если кому-нибудь когда-нибудь помогут в будущем.

В браузерах при запуске сработало событие Stage.RESIZE. Это не было запущено в инструменте разработки. Поскольку это происходило на очень ранней стадии, «loadingIcon» получал бы нулевую высоту (так как у него не было загруженного gfx), и это привело бы к нулевой шкале Y.

Итак, обратите внимание: в браузере, при запуске может запускаться несколько событий, которые обычно не выполняются в CS5.

...