Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Размеры сцены и мувиклипов (http://www.flasher.ru/forum/showthread.php?t=110102)

Сайлас 27.03.2008 01:10

Размеры сцены и мувиклипов
 
Возникло несколько вопросов, которых с помощью документации, к сожалению, решить не получилось
1 (скорее не вопрос, а уточнее). Правильно ли я понимаю, что Stage.align по умолчанию center? В следующем вопросе поясню почему это так меня затронуло :)
2. Дело в том, что при помещении мувиклипа на сцену возникает ряд проблем с размерами этого самого мувиклипа и самой сцены.
2.1. Никак не хотят устанавливаться в какое либо значение параметры MovieClip.height и width. Если их затрейсить без изменения, они получаются равны нулю. Если их изменить, то этот мувиклип просто пропадает со сцены и трейс этих параметров все равно возвращает 0.
2.2. При помещении на сцену мувиклипа, скажем, размером 300x600 сцена не принимает размер этого мувиклипа, а делается достаточно большой. При попытке затрейсить Stage.stageHeight или stageWidth выдаются какие-то непонятные значения, типа 796x1140, при попытке изменить это параметры ничего не изменяется. Собственно вопрос, как сделать, чтобы сцена была того же размера, как и мувиклип и как установить высоту и ширину собственно по умолчанию?

etc 27.03.2008 02:03

Вас непонятно.

MonkDead 27.03.2008 12:28

Если трудно дается высказывание мыслей, необходимо выкладывать хотя бы код ваших действий.

Сайлас 27.03.2008 15:16

На самом деле просто хочу динамически подгрузить на сцену мувиклип. А он после подгрузки непонятно как располагается на сцене.

Ладно, на конкретном и упрощенном-укороченном примере :) На самом деле конечно нужно добавлять лисенер на загрузку объекта и т.п., но считаем, что объект подгружается мгновенно (с локалхоста)
Все это компилировалось в Flex Builder 3 (AS project)
Код:

package
{
        import flash.display.StageAlign;
        import flash.display.Sprite;
        import flash.display.Loader;
        import flash.net.URLRequest;

        public class TestClass extends Sprite
        {       
                public var test:Loader;
                               
                public function TestClass()
                {
                        stage.align=StageAlign.TOP_LEFT; //по умолчанию center, при нем подгруженный объект вообще выезжает за пределы сцены
                        stage.stageHeight=550; //попытка установить высоту сцены
                        stage.stageWidth=150; // и ширину сцены успехов не приносит
                        test = new Loader();
                        var url:URLRequest = new URLRequest('test.swf');
                        //test.width = 100; при попытке установить высоту и ширину любого display объекта, он исчезает со сцены, в данном случае это не МувиКлип, но с Мувиклипом тоже самое
                        test.load(url);
                        this.addChild(test);
                }
        }
}

Теперь еще раз:
1. подгружается test.swf, попытки установить ширину его приводят к визуальному исчезновению его со сцены - это баг, фича, недоработка?
2. при попытке в ASе установить ширину и высоту сцены ничего не получается, просто эти настройки игнорируются.
3. После компиляции в Flex Builder 3 получается, что сам display object (в данном случае лоадер, им может быть тот же мувиклип) ужимается в сцене. То есть, к примеру в html'e задаем width 550, height 150, сцена занимает 550*150, а сам объект короче и уже, несмотря на то, что размер самого объекта 550*150. Это баг?
При этом, если в Flash CS3 создать пустой fla, сделать Document class TestClass и задать размер fla 550*150, то сцена занимает корректный размер и объект не ужимается.

silin 27.03.2008 16:05

>>На самом деле конечно нужно добавлять лисенер на загрузку объекта и т.п., но считаем, что объект подгружается мгновенно (с локалхоста)

так нужно добавить и менять width по Event.COMPLETE
"мгновенно" ничего происходит, даже в локале

Сайлас 27.03.2008 16:30

Ладно, на самом деле как управлять шириной мувика я разобрался.
Действительно у лоадера размерами управлять не получается.
Нужно получать контент лоадера как мувиклип:
Код:

loader.contentLoaderInfo.addEventListener(Event.INIT,onLoadMovie);
Код:

private function onLoadMovie(e:Event):void
{
        var movie:MovieClip = loader.content as MovieClip;
        movie.width=650;
        movie.height=350;
        this.addChild(movie);                       
}

Однако проблема с размерами сцены не решилась

wvxvw 27.03.2008 16:40

А что вы понимаете под сценой? то, что было Stage'м в АС2 или DisplayObjectContainer в котором находится загруженный клип?
Если вариант 1 - то из самого флеша никак.
Если вариант 2 - то свойства .width и .height...

ЗЫ. в мануале ж написано, что stageWidht и stageHeight read-only.

Сайлас 27.03.2008 17:01

Может у каждого свой мануал? О_о
Flex Builder 3 и Flash CS3:
Цитата:

stageHeight property
stageHeight:int [read-write]
Цитата:

stageWidth property
stageWidth:int [read-write]
Ну я хотя бы смог установить Stage в размер с мувиклипом, установив
Код:

stage.scaleMode = StageScaleMode.NO_SCALE;

silin 27.03.2008 17:20

да, есть непонятка: никакой он не [read-write] выходит..
во флешке:
Код:

stage.stageWidth = 150;
trace( "stage.stageWidth : " + stage.stageWidth );

тестю в FD:
stage.stageWidth : 986// размер окна
в браузере
stage.stageWidth : 300// флешка вставлена с width=300

т.е. налицо явный приоритет контейнера, в котором "живет" флешка, все потуги изнутри что-то изменить тщетны, имхо

badun 27.03.2008 17:31

Цитата:

Сообщение от Сайлас
Может у каждого свой мануал? О_о
Flex Builder 3 и Flash CS3:

Если уж цитировать хелп, то до конца прочесть надо
Цитата:

This property cannot be set.


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

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