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

stepa323 06.01.2011 15:58

обновление координат клипа
 
Подскажите как обновить координаты клипа, первой функцией такой же я клипы загружаю через хмл, а вот это мне нужно обновить их координаты, но не вынося по новой.....
Код AS1/AS2:

_global.update = function() {
        i = 1;
        a = 0;
        b = 1;
        c = 2;
        d = 3;
        f = 1;
        arr = [];
        j = myXML.childNodes.length;
        j = parseInt(j);
        while (i<j) {
                _root.login = myXML.childNodes[a].firstChild;
                _root.osx = myXML.childNodes[b].firstChild;
                _root.osy = myXML.childNodes[c].firstChild;
                _root.online = myXML.childNodes[d].firstChild;
                _root.osx = parseInt(_root.osx);
                _root.osy = parseInt(_root.osy);
                if (_root.login == undefined) {
                        break;
                }
                arr[f] = _root.attachMovie("skelet", _root.login, i);
                arr[f]._name._x = _root.osx;
                arr[f]._name._y = _root.osy;
                if (arr[f]._name == _root.user) {
                        player = arr[f];
                }
                f += 1;
                i += 1;
                a = d+1;
                b = a+1;
                c = b+1;
                d = c+1;
                myXML.load("http://kahoxa.ru/xml.php");
        }
 
};


dark256 06.01.2011 16:01

Код AS1/AS2:

if ( arr[f] == undefined )
{
arr[f] = _root.attachMovie("skelet", _root.login, i);
}
else
{
клип уже есть, меняем ему координаты
}


stepa323 06.01.2011 16:08

координаты таким образом поменять?
Код AS1/AS2:

arr[f]._x = _root.osx;
                arr[f]._y = _root.osy;


dark256 06.01.2011 16:11

ага. ибо клип уже есть и его название внесено в массив.
только я бы писал все-таки так:

Код AS1/AS2:

arr[f] = _root.attachMovie("skelet", _root.login+некий_индекс, i);

Чтобы имена клипов были уникальными. А то у вас в классе будет 100 Вась.
- "Вася, к доске!"
Люди ломанутся все, а во флэше пойдет только один - но только последний пришедший в школу с таким именем :)

stepa323 06.01.2011 16:12

вообще перемещать перестал( постоянно теперь возвращает на нулевые координаты всех(

Добавлено через 1 минуту
вот весь код:
Код AS1/AS2:

stop();
myXML = new XML();
myXML.load("http://kahoxa.ru/xml.php");
_global.func = function() {
        i = 1;
        a = 0;
        b = 1;
        c = 2;
        d = 3;
        f = 1;
        arr = [];
        j = myXML.childNodes.length;
        j = parseInt(j);
        while (i<j) {
                _root.login = myXML.childNodes[a].firstChild;
                _root.osx = myXML.childNodes[b].firstChild;
                _root.osy = myXML.childNodes[c].firstChild;
                _root.online = myXML.childNodes[d].firstChild;
                _root.osx = parseInt(_root.osx);
                _root.osy = parseInt(_root.osy);
                if (_root.login == undefined) {
                        break;
                }
                arr[f] = _root.attachMovie("skelet", _root.login, i);
                arr[f]._x = _root.osx;
                arr[f]._y = _root.osy;
                if (arr[f]._name == _root.user) {
                        player = arr[f];
                }
                f += 1;
                i += 1;
                a = d+1;
                b = a+1;
                c = b+1;
                d = c+1;
                myXML.load("http://kahoxa.ru/xml.php");
        }
        clearInterval(timer);
};
_global.go = function() {
        myXML1 = new XML();
        myXML1.load("http://kahoxa.ru/xml.php?osx="+player._x+"&osy="+player._y+"&user="+_root.user, "GET");
};
_global.update = function() {
        i = 1;
        a = 0;
        b = 1;
        c = 2;
        d = 3;
        f = 1;
        arr = [];
        j = myXML.childNodes.length;
        j = parseInt(j);
        while (i<j) {
                _root.login = myXML.childNodes[a].firstChild;
                _root.osx = myXML.childNodes[b].firstChild;
                _root.osy = myXML.childNodes[c].firstChild;
                _root.online = myXML.childNodes[d].firstChild;
                _root.osx = parseInt(_root.osx);
                _root.osy = parseInt(_root.osy);
                if ( arr[f] == undefined )
{
arr[f] = _root.attachMovie("skelet", _root.login, i);
}
else
{
arr[f]._x = _root.osx;
                arr[f]._y = _root.osy;
}
                if (arr[f]._name == _root.user) {
                        player = arr[f];
                }
                f += 1;
                i += 1;
                a = d+1;
                b = a+1;
                c = b+1;
                d = c+1;
                myXML.load("http://kahoxa.ru/xml.php");
        }
 
};


dark256 06.01.2011 16:24

амм.... у вас вообще все в корне неверно :)))))

Упростим ваш код

Код AS1/AS2:

myXML = new XML();
myXML.load("http://kahoxa.ru/xml.php");
 
_global.func = function()
 
_global.go = function()
 
_global.update = function()

Как вы думаете - после загрузки ХМЛ - какая функция вызовется?

stepa323 06.01.2011 16:27

:) у меня функци вон где вызываются:
Код AS1/AS2:

stop();
myXML = new XML();
myXML.load("http://kahoxa.ru/xml.php");
timer=setInterval(_global.func,1000);
timer1=setInterval(_global.update,1100);
onEnterFrame = function () {
 
        if(Key.isDown(Key.LEFT)){
                player._x-=8;
                player._xscale=100;
                if(player._currentframe==2)player.gotoAndPlay(2);
                _global.go();
        }
        if(Key.isDown(Key.RIGHT)){
                player._x+=8;
                player._xscale=-100;
                if(player._currentframe==2)player.gotoAndPlay(2);
                _global.go();
        }
 
};

Добавлено через 1 минуту
а после выноса клипов, там клеар интервал стоит

dark256 06.01.2011 16:31

Тогда это не "ВЕСЬ КОД".
Функция обработчик данных из ХМЛ-я, срабатывающая раз в секунду? А если ваш ХМЛ считывается дОльше 1 секунды? А если там время ожидания 15 секунд? Ну и так далее. Ичтайте бОльше про класс XML

stepa323 06.01.2011 16:36

а с этим можно что-нибудь сделать? что бы обновлял, просто почему он к клипу не обращается понять не мог(
здесь:
Код AS1/AS2:

_global.func = function()

он выкинул всех в массив и по координатам, а в
Код AS1/AS2:

_global.update = function()

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

dark256 06.01.2011 16:39

у вас ХМЛ еще не получена, а в ы координаты клипам пишете.
вот и все.
читайте про событие .onLoad


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

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