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

Curizor 26.05.2008 10:53

выравнивание в бегущей строке
 
Здравствуйте. Вот у меня есть меню в виде бегущей строки. Там названия городов типа плывут. Названия берутся из xml. Подскажите пожалуйста, как мне сделать одинаковое между названиями расстояние? А то получается то шире (если название города короткое), то уже (если длинное). Можно, конечно, пробелов в эксэмэльке понаставить, но она генерится автоматически и города будут меняться заказчиком... Что же делать?

Alex_beginner 26.05.2008 11:08

Поясните как релизована бегущая строка. Подробно, если можно.

Curizor 26.05.2008 11:24

Вот код:
Код:

var isPlay = true;
var clipList:Array = new Array();
if (_root['href'] == undefined) _root['href'] = "sample.xml";

function initSity(caption, href, index) {

        var resultMC = this.cityProto.duplicateMovieClip("city_" + index, this.getNextHighestDepth());       

        resultMC._y = 0;
        resultMC._x = index * resultMC._width;       
        resultMC.__proto__ = new CSity();
        resultMC.init(caption, href, this);
        return resultMC;
}

function init(configFileName) {
       
        _root.config = new XML();
        _root.config.ignoreWhite = true;
        _root.config['owner'] = this;
        _root.config.onLoad = function(success:Boolean)  {                       
                if (success) {
                        this['owner'].configure(this);
                }
        }
        _root.config.load(configFileName);
}

function configure(xml:XML) {

        var cities = xml.firstChild.childNodes;
    var len = cities.length

        for(var i = 0; i < len; i++) {
                if (cities[i].nodeName == 'city') {
                        var city = cities[i].childNodes;                       
                        var name = city[0].firstChild.nodeValue;
                        var href = city[1].firstChild.nodeValue;
                        clipList.push(initSity(name, href, i));
                }
        }
}

init(_root['href']);

function onEnterFrame() {
        // move captions
        if (isPlay) {
                for (var i = 0; i < clipList.length; i++) {
                        clipList[i]._x -= 0.3;
                        if (clipList[i]._x < -clipList[i]._width) {
                                clipList[i]._x = (clipList.length - 1) * clipList[i]._width;
                        }
                }
        }
}

Исходник нужен?

Alex_beginner 26.05.2008 14:44

Насколько я понимаю расстановка названий по оси X производится в этой строке:
Код:

resultMC._x = index * resultMC._width;
Поправьте если я неправ.

Curizor 26.05.2008 15:15

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

alexcon314 26.05.2008 15:21

Curizor, исправьте свой третий пост в этой теме. Для оформления кода надо использовать теги [code][/code]

Alex_beginner 26.05.2008 15:29

Ответье пожалуйста на поставленный вопрос, заданный в предыдущем моем посте!

Curizor 26.05.2008 15:41

Вообще-то это ширина всей строки с названиями городов

исправил

Alex_beginner 26.05.2008 15:46

Код:

resultMC._x
не может быть шириной. Это позиция левого-верхнего угла клипа, относительно начала координат клипа-носителя. Другое дело, что она рассчитывается через ширину клипа. Но это не имеет отношения к делу.

1.Вы ответьте да или нет. При реализации всего этого Вы подразумевали, что в этой строке будут задаваться позиции названий1/ городов или нет?
2. Что исправили?
3. Работает ли?

Curizor 26.05.2008 16:07

Да, так. Не работает. "Исправил" я написал модератору. Извините, я в форумах - новичек.


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

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