PDA

Просмотр полной версии : выравнивание по центру


Bankomat
12.01.2010, 18:38
снова столкнулся с проблеммой
загружаю картинку из xml в контейнер следующим образом

var picts_cont:MovieClip = _root.createEmptyMovieClip("picts_cont_mc", _root.getNextHighestDepth());

хотелось бы чтоб эта картинка встала ровно по середине ролика

пробовал таким образом
picts_cont._x = (Stage.width-picts_cont._width)/2
picts_cont._y = (Stage.height-picts_cont._height)/2
но загружаемая картинка встает в центр ролика своим верхним левым углом, а не своим центром..
подскажите как можно выравнять загружаемую картинку по ровно по центру ролика

еще интересует вариант с загрузкой флешки по центру ролика
var my_mcl:MovieClipLoader=new MovieClipLoader();
my_mcl.loadClip("123.swf",2);

как загружаемый swf вставить по центру ролика?

Hauts
12.01.2010, 18:58
Stage.align = "tl";
Stage.scaleMode = "noscale";
var loadListener = {};
loadListener.onLoadInit = function(target_mc:MovieClip){
target_mc._x = Math.round((Stage.width - target_mc._width)/2);
target_mc._y = Math.round((Stage.height - target_mc._height)/2);
}
my_mcl.addListener(loadListener);


Правильно пробовали, но не в тот момент.

Bankomat
12.01.2010, 19:26
Правильно пробовали, но не в тот момент.

а в какой момент вставлять тот код который вы дали?


var picts_cont:MovieClip = _root.createEmptyMovieClip("picts_cont_mc", _root.getNextHighestDepth());
Stage.align = "tl";
Stage.scaleMode = "noscale";
var loadListener = {};
loadListener.onLoadInit = function(picts_cont:MovieClip){
picts_cont._x = Math.round((Stage.width - picts_cont._width)/2);
picts_cont._y = Math.round((Stage.height - picts_cont._height)/2);
}
my_mcl.addListener(loadListener);

так вы имелли ввиду? таким образом ничего не происходит
картинка вставляется в верхний левый угол

вот код с помощью которого я загружаю картинки по очереди из xml в контейнер, который хотелось бы поместить по центру ролика
если вас не затруднит, покажите как действовать?
// шаг 1
// клип-контейнер для картинок
var picts_cont:MovieClip = _root.createEmptyMovieClip("picts_cont_mc", _root.getNextHighestDepth());

// ----------------
// шаг 2
// xml объект
var picts_xml:XML = new XML();
picts_xml.ignoreWhite = true;
// пробелы в xml нам врядли понадобятся
// шаг 3
// обработка загрузки xml файла
picts_xml.onLoad = function(success) {
if (success) {
//trace(this); // смотрим что загрузилось
// записываем количество картинок
allPicts = picts_xml.firstChild.childNodes.length;
// загружаем первую картинку
showPict();
} else {
trace("xml не загружен");
}
};
// шаг 4
// загрузка xml файла
picts_xml.load("picts.xml");
// шаг 5
// подготовка к загрузке картинок
var curPict = 0;
// номер текущей картинки
var allPicts = 0;
// всего картинок
// MovieClipLoader для картинок
var pict_mcl:MovieClipLoader = new MovieClipLoader();
// функция, отвечающая за загрузку картинки и подписи
showPict = function () {
// путь и название текущей картинки
var url = picts_xml.firstChild.childNodes[curPict].attributes.link;
// загрузка картинки
pict_mcl.loadClip(url, picts_cont);
//
};
// загрузка следующей картинки
nextPict = function () {
curPict++;
if (curPict>=allPicts) {
curPict = 0;
}
showPict();
};
nextPict();
setInterval(nextPict,6000);

Hauts
12.01.2010, 20:55
Меня не затруднит :) Держите:


Stage.align = "tl";
Stage.scaleMode = "noscale";
import flash.filters.BlurFilter;
var images = [];
var picts_xml:XML = new XML();
picts_xml.ignoreWhite = true;
picts_xml.onLoad = function(success) {
if (success) {
var totalPictures = this.firstChild.childNodes.length;
for (var k = 0; k<totalPictures; k++) {
images[k] = this.firstChild.childNodes[k].attributes.link;
}
loadImage();
} else {
trace("xml не загружен");
}
};
picts_xml.load("picts.xml");
var container = _root.createEmptyMovieClip("picts_cont_mc", _root.getNextHighestDepth());
var loaderBox = container.createEmptyMovieClip("loaderBox", 0);
loaderBox.cacheAsBitmap = true;
container.onResize = function() {
this._x = Math.round((Stage.width-this._width)/2);
this._y = Math.round((Stage.height-this._height)/2);
};
Stage.addListener(container);
var mcl:MovieClipLoader = new MovieClipLoader();
var currentImage = 0;
var loadListener = {};
var interval:Number;
loadListener.onLoadInit = function(target_mc) {
container.onResize();
currentImage++;
if (currentImage == images.length-1) {
currentImage = 0;
}
interval = setInterval(loadImage, 10000);
target_mc._alpha = 0;
target_mc.filters = [new BlurFilter(10, 10, 3)];
target_mc.onEnterFrame = function() {
if (this._alpha<100) {
this._alpha += 10;
var f = this.filters[0];
f.blurX = f.blurY=(100-this._alpha)/10;
this.filters = [f];
} else {
this.filters = null;
delete this.onEnterFrame;
}
};
};
mcl.addListener(loadListener);
function loadImage() {
clearInterval(interval);
mcl.loadClip(images[currentImage], loaderBox);
};


С появлением картинок, думаю, сами разберетесь.

Bankomat
13.01.2010, 08:57
большое спасибо

единственное вот сдесь если оставлять такой кол, то он доходит только до пред последней картинки в xml файле и начинает заного)
поставил вместо нее 1 0 стал показывать все картинки=)
если убираешь вообще -1 то оно как то не вписывается в альфу)
if (currentImage == images.length-1)

ну а так все работает)

Hauts
13.01.2010, 09:09
Опс, ошибся немного.

Bankomat
13.01.2010, 11:37
Опс, ошибся немного.

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

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

иногда работает так(это плоха)
А появляется
А затухает
А резко появляется и затухает
B появляется
B затухает
B резко появляется и затухает

и тд

что делать в чем ошибка?

Hauts
13.01.2010, 12:31
Если вы не меняли код появления картинок, то последовательность должна быть такой:

А появляется из прозрачности
А исчезает на какой-то момент
В появляется из прозрачности
В исчезает и так далее.

В моем коде нет "затухания" картинок, только появление из прозрачности.

Bankomat
13.01.2010, 13:19
Если вы не меняли код появления картинок, то последовательность должна быть такой:

А появляется из прозрачности
А исчезает на какой-то момент
В появляется из прозрачности
В исчезает и так далее.

В моем коде нет "затухания" картинок, только появление из прозрачности.

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