Форум 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)
-   -   Ограничение размеров подгружаемой флешки (http://www.flasher.ru/forum/showthread.php?t=112309)

Firefoxer 23.05.2008 17:19

Ограничение размеров подгружаемой флешки
 
Подгружаемая флешка, оперируя значениями Stage.width и Stage.height, расширяется на все окно проигрывателя, заполняя все, реагируя даже на ресайз. С самой подгружаемой флешкой делать ничего не могу. Возможно ли как-то ее "обмануть" и ограничить занимающую ей зону без масок?

Alex_beginner 23.05.2008 17:22

А почему бы не подгружать в созданный отдельно мувик!

Firefoxer 23.05.2008 17:30

А что дальше? Я видимо не дорасказал. Она, эта подгружаемая свфка, аттачит картинки из библиотеки и растягивает их на все полотно. И даже если подгружать ее в мувик, маскировать его, то результат меня не удовлетворит, мне нужно видеть именно все ее содержимое, только уменьшенное.

lexa2000lexa 23.05.2008 17:32

ну тогда используйте
Код:

_xscale и _yscale
и получите что хотите.

Alex_beginner 23.05.2008 17:37

Можно даже объект Matrix использовать

lexa2000lexa 23.05.2008 17:41

а стоит ли этот геморой таких свечей?

Firefoxer 23.05.2008 17:42

Вложений: 1
Xscale Пробовал, может не так пробовал. Посмотрите, кому не лень. Кода по-минимуму.

Alex_beginner 23.05.2008 17:46

Возможно вопрос в синтаксисе:
Код:

мувиклип._xscale;
мувиклип._yscale;


Firefoxer 23.05.2008 17:46

Геморойчик конечно нежелательный, пробую и вариант с двумя отдельными флешками. Но тут дело принципа, было бы крайне разобраться в такой казалось бы мелочи.

Firefoxer 23.05.2008 17:50

у меня там:
Код:

_level2._xscale
куда подгружается флеха. но это не спасает, ведь потом она аттачит уже на другие уровни.

lexa2000lexa 23.05.2008 18:17

Вложений: 1
вот попробуйте, так вам подойдет.

Firefoxer 23.05.2008 18:22

Может и не подойдет. Другими словами все остальное нужно увеличивать в два раза, такой выход предлагаете?

lexa2000lexa 23.05.2008 18:28

почему ? увеличивать.

Alex_beginner 23.05.2008 19:16

А вот так!

Ну там модифицируй код как тебе надо.

Код:

var loadedClip:MovieClip = this.createEmptyMovieClip("loadedClip",13);
        loadedClip.loadMovie("scen.swf");
        _level0._xscale=40;
        _level0._yscale=40;


Firefoxer 23.05.2008 21:44

Есть еще идеи кроме вариаций со scale?

silin 23.05.2008 22:35

Код:

function onLoadInit(mc){
        trace(mc);
        for(var i in Stage["_listeners"]){
                delete i;
        }
        //необязательно скале, что угодно, погруженная уже не реагирует на размер сцены
        _level2._xscale=20;
        _level2._yscale=20;
}
var loader:MovieClipLoader=new MovieClipLoader();
loader.addListener(this);
loader.loadClip("scen.swf",2);


Molecula 24.05.2008 05:29

silin, не получилось с твоим кодом.

Вот что у меня в r.swf:
Код:

var l:Object = new Object();
var l1:Object = new Object();
var l2:Object = new Object();
var l3:Object = new Object();
l.onResize = e;
l2.onResize = g;
function e(){
        mc._width = Stage.width;
}
function g(){
        mc._height = Stage.height;
}

function d(){
        trace('removed')
        Stage.removeListener(l);
}
Stage.addListener(l);
Stage.addListener(l1);
Stage.addListener(l2);
Stage.addListener(l3);

+ на сцене руками положенный черный квадрат, с Инстанс Нэйм mc.

При компиле вся сцена ЧЁРНАЯ :)

Как сделал что бы работало:
Подгрузочный файл l.swf (на сцене ничего нет):
Код:

var c = 0;
function onLoadInit(m) {
        for (var i in m) { // ищём на обжекты сколько их там
                if (typeof (m[i]) == "object") {
                        c++;
                        trace(c);
                }
        }
        for (var i:Number = 0; i<c; i++) {
                for (var o in Stage['_listeners']) {
                        delete Stage['_listeners'][i]; //нафиг со сцены обжекты
                }
        }
}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(this);
mcl.loadClip('r.swf',1);


Firefoxer 24.05.2008 11:00

Вложений: 1
Посмотрите новую версию. Интересовался альтернативными методами, т.к. столкнулся со следующей проблемой. Теперь подгружаю две свфки, одна, уже знакомая вам scen.swf, находится снизу, а поверх нее гружу новую - pan01x.swf. Нужно вывести на передний план scen, точнее панорамку создаваемую этим мувиков, да так, чтобы она не растягивалась на весь экран.

Роман Вадимович 24.05.2008 11:47

Можно применить ещё один способ.
Сделать флешку к примеру размером 800 на 600 и спроектировать её таким образом, будто размеры её всегда стабильны.
Потом, вставит на веб страничку в параметрах указать width=100%, height=100%.
При этом содержимое будет растягиваться автоматически, пытаясь занять оптимальное пространство.
Посмотрите - может это Вам и подойдет.

Molecula 24.05.2008 12:26

Если подгружать scen.swf, то мой метод убьёт там растяжку, осталось достучаться по него через загрузчика.

Вообще гемор какой-то, лечге трепанацию СВФ сделать и скомплить обратно.

Alex_beginner 24.05.2008 13:15

Друг мой! Испробуй сие блюдо!

Код:

var loadListener:Object = new Object();
        loadListener.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void {
    target_mc._xscale = 10;
        target_mc._yscale = 10;
}

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);

var mc:MovieClip = this.createEmptyMovieClip("mc", 2);
mc._lockroot = true;
mcLoader.loadClip("scen.swf", mc);

100% рабочий вариант. Только в глубину getNextHighestDepth() неставь плиз!:)

Кстати! Посмотрел pan04 вариант глючный. В свое время iNils поднимал сей вопрос. Новидимо никто неотреагировал. А именно, метод (или функция) loadMovie() загружает фильм независимо от основного потока кода, т.е. не ждет когда файл загрузится, а передает управление следующим за ней кодам. Поэтому извращаться над подгруженным swf'ом сразу после loadMovie - операция некорректная. Чтобы обойти сию замарочку, нужно использовать класс MovieClipLoader и событие его onLoadComplete или onLoadInit.

Спасибо за внимание! У меня все.

Firefoxer 24.05.2008 19:44

трепанцию проводил, замучился обратно компилить. так и не завелась. Но все дело в том, что этих панорам будет куча. и даже такой вариант не устроил бы.

Alex_beginner 24.05.2008 19:56

Что нетак?

У меня все великолепно пашет

Firefoxer 24.05.2008 20:09

О! Наконец-то сделал. Спасибо Всем, кому успел попарить мозги этой фигней.

Alex_beginner 24.05.2008 20:12

Как сделал то? Поделись новинкой

Firefoxer 24.05.2008 20:23

Вложений: 1
Alex_beginner, сделал все по образу и подобию Вашего последнего примера, плюс разобрался наконец, кто где должен находится. и маска на панорамку наделась. все это и нужно было мне.

Alex_beginner 24.05.2008 20:25

Ну ладно. А то уж я подумал, что есть еще вариант какой

Firefoxer 24.05.2008 20:29

Может AS3 мог бы что-то интереснее предложить. Но это только догадки, ибо не знаю.


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

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