Форум 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=134945)

Bankomat 12.01.2010 18:38

выравнивание по центру
 
снова столкнулся с проблеммой
загружаю картинку из xml в контейнер следующим образом

Код AS1/AS2:

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

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

пробовал таким образом
Код AS1/AS2:

picts_cont._x = (Stage.width-picts_cont._width)/2
picts_cont._y = (Stage.height-picts_cont._height)/2

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

еще интересует вариант с загрузкой флешки по центру ролика
Код AS1/AS2:

var my_mcl:MovieClipLoader=new MovieClipLoader(); 
my_mcl.loadClip("123.swf",2);

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

Hauts 12.01.2010 18:58

Код AS1/AS2:

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

Цитата:

Сообщение от Hauts (Сообщение 878529)
Правильно пробовали, но не в тот момент.

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


Код AS1/AS2:

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 в контейнер, который хотелось бы поместить по центру ролика
если вас не затруднит, покажите как действовать?
Код AS1/AS2:

// шаг 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

Меня не затруднит :) Держите:

Код AS1/AS2:

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

Цитата:

Сообщение от Hauts (Сообщение 878620)
Опс, ошибся немного.

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

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

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

и тд

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

Hauts 13.01.2010 12:31

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

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

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

Bankomat 13.01.2010 13:19

Цитата:

Сообщение от Hauts (Сообщение 878660)
Если вы не меняли код появления картинок, то последовательность должна быть такой:

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

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

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


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

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