PDA

Просмотр полной версии : центруем пустой клип, в который будем загружать странички


Dr_Bra
24.02.2009, 21:31
Привет, уважаемые Гуру!
У меня вновь возник вопрос, надеюсь на Вашу помощь.
Делаю сайт, в котором будет резиновый фон, меню и информационные странички должны располагаться посередине оси х, а по y там где расположим на сцене ручками. Использую вот такой код.
//cсцена
var fon_w:Number = fon._width;
var fon_h:Number = fon._height;
var fon_so = fon._width/fon._height;
Stage.addListener(this);
Stage.align = "TL";
Stage.scaleMode = "noScale";
this.onResize = function() {
var stage_so:Number = Stage.width/Stage.height;
if (stage_so>fon_so) {
fon._xscale = fon._yscale=100*Stage.width/fon_w;
} else {
fon._xscale = fon._yscale=100*Stage.height/fon_h;
}
};

//информационное поле
Stage.addListener(images_cont)
images_cont.onResize=function() {
this._x = (Stage.width - this._width)/2;
}

//кнопки
Stage.addListener(btm1)
btm1.onResize=function() {
this._x = (Stage.width - this._width)/2-142;
}
Stage.addListener(btm2)
btm2.onResize=function() {
this._x = (Stage.width - this._width)/2;
}
Stage.addListener(btm3)
btm3.onResize=function() {
this._x = (Stage.width - this._width)/2+139;
}

//сразу грузится главная страница
_root.images_cont.loadMovie("main.swf");


Все идеально, кроме пустого мувиклипа images_cont, в который грузятся странички... Подскажите как можно images_cont от центровать по оси х?

Добавлено через 49 минут
в чем может быть трабл ?

Kuruki
24.02.2009, 22:21
Грузить страницы MovieClipLoader' ом. Ждать события onLoadInit, после которого станут известны размеры загружаемого swf и только тогда центровать ее.

Dr_Bra
24.02.2009, 22:27
у меня сейчас в 10 кадре прописан код, как я понял нужно в 10м кадре написать
//сразу грузится главная страница
_root.images_cont.loadMovie("main.swf");
а в 11м его центровать?

Kuruki
24.02.2009, 22:37
Тестировать лень, но вряд ли плеер будет дожидаться загрузки в 10 кадре, так что не факт, что в 11 кадре swf будет уже загружен. Лучше воспользоваться MovieClipLoader'ом

Dr_Bra
24.02.2009, 22:41
Тестировать лень, но вряд ли плеер будет дожидаться загрузки в 10 кадре, так что не факт, что в 11 кадре swf будет уже загружен. Лучше воспользоваться MovieClipLoader'ом

подкинь мысль плз, как им воспользоваться
небольшой скриптик, что бы я разобрался, если не сложно, я пока ещё чайник.

Добавлено через 1 минуту
у меня в самом начале в коде стоят эти строки, разве они не то обозначают
не мувиклип лодер?
//код который отвечает за поведение кнопочек
var mcl:MovieClipLoader = new MovieClipLoader();
var box:MovieClip = this.images_cont;

var lastPressed:MovieClip = null;
function push_the_button(){
trace(this._name)
lastPressed.enabled = true;
lastPressed.gotoAndPlay("_up");
lastPressed = this;
lastPressed.enabled = false;
mcl.loadClip(this.param + '.swf', box);

}
btm1.onPress = push_the_button;
btm1.param = 'flowers';
btm2.onPress = push_the_button;
btm2.param = 'main';
btm3.onPress = push_the_button;
btm3.param = 'main';

Kuruki
24.02.2009, 22:51
Ну да, он самый. Только ты им не пользуешься...
Здесь (http://flasher.ru/forum/showthread.php?t=93300) найдешь инфу о нем на русском с примерами

Dr_Bra
24.02.2009, 22:53
[QUOTE=Kuruki;800872]Ну да, он самый. Только ты им не пользуешься...
Здесь (http://flasher.ru/forum/showthread.php?t=93300) найдешь инфу о нем на русском с примерами[/QU
СПАСИБО тебе :drinks:

Добавлено через 10 минут
да это не быстро тут разобраться, а так на взгляд не поможешь ? за хелп все равно спасибо

Добавлено через 18 минут
эх, а счастье так близко ) ребят, подскажите плз бездарю )

Добавлено через 30 минут
а как же им воспользоваться в моем случае подскажите, люди добрые !!!

Kuruki
25.02.2009, 00:16
var box:MovieClip = this.images_cont;
Вот это не понимаю зачем делаешь. Сразу в images_cont грузить нельзя?

Быть контейнером для загружаемого swf и одновременно слушателем состояния загрузки swf и ресайза сцены, images_cont не сможет. Потому что после загрузки в него содержимого, свойства и методы, назначенные ему тобой "удаляются". Поэтому в качестве слушателе создаешь новый объект и на него вешаешь функции.
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
Stage.addListener(listener)

listener.onLoadInit = function(){
// Размеры загружаемого swf теперь известны,центрируемся
this.onResize();
}
listener.onResize=function() {
images_cont._x = (Stage.width - images_cont._width)/2;
}

//сразу грузится главная страница
mcl.loadClip('main.swf', images_cont);

//а можно и
btm2.onPress();
// тем самым "блокируя" кнопку

Dr_Bra
25.02.2009, 09:15
у меня сейчас вот такой код, который без проблем центрует кнопки, но никак не может разобраться с информационным полем, поскольку на сцены пустой мувиклип в который загружаются странички
//информационное поле
Stage.addListener(images_cont)
images_cont.onResize=function() {
this._x = (Stage.width - this._width)/2;
}

//кнопки
Stage.addListener(btm1)
btm1.onResize=function() {
this._x = (Stage.width - this._width)/2-142;
}

попробовал поменять код на тот, который предложил Kuruki, но ничего не получилось ((( что еще можно сделать?

Kuruki
25.02.2009, 17:06
покажи как ты вставил мой код. Не понимаю как может не получиться

Dr_Bra
25.02.2009, 17:35
//код который отвечает за кнопки
var mcl:MovieClipLoader = new MovieClipLoader();
var box:MovieClip = this.images_cont;

var lastPressed:MovieClip = null;
function push_the_button(){
trace(this._name)
lastPressed.enabled = true;
lastPressed.gotoAndPlay("_up");
lastPressed = this;
lastPressed.enabled = false;
mcl.loadClip(this.param + '.swf', box);

}
btm1.onPress = push_the_button;
btm1.param = 'flowers';
btm2.onPress = push_the_button;
btm2.param = 'main';
btm3.onPress = push_the_button;
btm3.param = 'main';
//cсцена
var fon_w:Number = fon._width;
var fon_h:Number = fon._height;
var fon_so = fon._width/fon._height;
Stage.addListener(this);
Stage.align = "TL";
Stage.scaleMode = "noScale";
this.onResize = function() {
var stage_so:Number = Stage.width/Stage.height;
if (stage_so>fon_so) {
fon._xscale = fon._yscale=100*Stage.width/fon_w;
} else {
fon._xscale = fon._yscale=100*Stage.height/fon_h;
}
};

//назначаем новый объект и центруем информационное поле (здесь у нас проблемы)
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
Stage.addListener(listener)

listener.onLoadInit = function(){
this.onResize();
}
listener.onResize=function() {
images_cont._x = (Stage.width - images_cont._width)/2;
}

//центруем кнопки
Stage.addListener(btm1)
btm1.onResize=function() {
this._x = (Stage.width - this._width)/2-142;
}
Stage.addListener(btm2)
btm2.onResize=function() {
this._x = (Stage.width - this._width)/2;
}
Stage.addListener(btm3)
btm3.onResize=function() {
this._x = (Stage.width - this._width)/2+139;
}

//сразу грузится главная страница
_root.images_cont.loadMovie("main.swf");

Kuruki
25.02.2009, 17:36
var mcl:MovieClipLoader = new MovieClipLoader();
//var box:MovieClip = this.images_cont;
// Зачем ты это делаешь?

var lastPressed:MovieClip = null;
function push_the_button() {
trace(this._name);
lastPressed.enabled = true;
lastPressed.gotoAndPlay("_up");
lastPressed = this;
lastPressed.enabled = false;
//mcl.loadClip(this.param+'.swf',box);
mcl.loadClip(this.param+'.swf',images_cont);
}
btm1.onPress = push_the_button;
btm1.param = 'flowers';
btm2.onPress = push_the_button;
btm2.param = 'main';
btm3.onPress = push_the_button;
btm3.param = 'main';

var fon_w:Number = fon._width;
var fon_h:Number = fon._height;
var fon_so = fon._width/fon._height;
Stage.addListener(this);
Stage.align = "TL";
Stage.scaleMode = "noScale";
this.onResize = function() {
var stage_so:Number = Stage.width/Stage.height;
if (stage_so>fon_so) {
fon._xscale = fon._yscale=100*Stage.width/fon_w;
} else {
fon._xscale = fon._yscale=100*Stage.height/fon_h;
}
};


//var mcl:MovieClipLoader = new MovieClipLoader();
// 2 раза создавать лоадер не нужно, но не в этом проблема
var listener:Object = new Object();
mcl.addListener(listener);
Stage.addListener(listener);
listener.onLoadInit = function() {
this.onResize();
};
listener.onResize = function() {
images_cont._x = (Stage.width-images_cont._width)/2;
};

Stage.addListener(btm1);
btm1.onResize = function() {
this._x = (Stage.width-this._width)/2-142;
};
Stage.addListener(btm2);
btm2.onResize = function() {
this._x = (Stage.width-this._width)/2;
};
Stage.addListener(btm3);
btm3.onResize = function() {
this._x = (Stage.width-this._width)/2+139;
};

//_root.images_cont.loadMovie("main.swf");
// По ходу ты даже не пытался врубиться о чем я тебе говорил...
mcl.loadClip('main.swf',images_cont);

Dr_Bra
25.02.2009, 17:44
пытался, но видимо не достаточно. мне тяжело дается вся тема программинга, я же без образования, ликвидирую безграмотность с помощью книг и этого форума, се1йчас настольная книга Колина Мука по AS 3, спасибо тебе, Kuruki, домой приду проверю новый код, просто на работе у меня CS4 не поддерживается, а я забыл его пересохранить...