PDA

Просмотр полной версии : Ограничение размеров подгружаемой флешки


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
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
вот попробуйте, так вам подойдет.

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
Посмотрите новую версию. Интересовался альтернативными методами, т.к. столкнулся со следующей проблемой. Теперь подгружаю две свфки, одна, уже знакомая вам 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
Alex_beginner, сделал все по образу и подобию Вашего последнего примера, плюс разобрался наконец, кто где должен находится. и маска на панорамку наделась. все это и нужно было мне.

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

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