НОВЫЕ ИГРЫЛУЧШИЕ ИГРЫФОРУМ 184 Всего сообщений: 305026
+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Не работает скрипт

Автор Тема: Не работает скрипт  (Прочитано 5018 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Не работает скрипт
« : 21 Января 2008, 14:22:51 »
Привет.
Стало быть суть скрипта - создать непрерывный поток вагонов на сцене.То есть двигатся они будут один за одним.
Вот сам код:
var speed = 50;
var s4et4ik = 0;
var name = "train"+s4et4ik;
 xcoordinate = 1;
_root.attachMovie("train", name, this.getNextHighestDepth(), {_y:216, _x:1014});
function NamesOfTrains() {
   ++s4et4ik;
}
function TrainSpeed() {
   _root[name]._x -= speed;
}
function Coordinate() {
    xcoordinate = _root[name]._x;
}
function NewTrains() {
   if (xcoordinate <= 540) {
      _root.attachMovie("train", name, this.getNextHighestDepth(), {_y:216, _x:1014});
   }
}
_root.onEnterFrame = function() {
   NamesOfTrains();
   Coordinate();
   TrainSpeed();
   NewTrains();
};
Первый вагон проезжает, второй аттачится, но двигатся отказывается наотрез.В чем проблема, объясните? Заранее спасибо.
З.Ы. Я только начинаю кодить на ActionScript  :shy2:

Оффлайн Vetal1992 Мужской

Re: Не работает скрипт
« Ответ #1 : 22 Января 2008, 04:24:25 »
гы, потому что "var name" у тебя выполняется один раз)))
И вообще, переборщил ты с кодом, xcoordinate нафига? A name?
Не парься с таким запутанным кодом)))  :bye:
Живи проще:
for (i=0; i<20; i++) {                       //вместо 20 - любое число, кол. поездов

_root.attachMovie("train", "train"+i, this.getNextHighestDepth());
clip = _root["train"+i];
clip._x=210+200*i                // 200 - это расстояние между поездами
clip._y=300                          // y-координата
clip.onEnterFrame = function() {
this._x -= 10;            // это скорость поездов
           };
}

А если хочешь сделать бесконечную... короче, на:

for (i=1; i<5; i++) { //Пофиг, не меньше 5
_root.attachMovie("train", "train"+i, this.getNextHighestDepth());
clip = _root["train"+i];
clip._x = 350+200*i; // 200 - это расстояние между поездами   -   НЕ МЕНЯТЬ
clip._y = 300; // y-координата
clip.n=i-1
clip.onEnterFrame = function() {
if(this._x==-200) this._x=600
this._x -= 5; // это скорость поездов: 1,2,5,10,25,50
};
}

А если еще пораскинуть мозгами... можна вывести идеальную функцию выезжания поездов)))  :clap3:

rasstojanie = 200 //расстояние между вагонами
xmax = 1024 //это крайняя правая точка анимации, т.е. из неё будут выползать вагоны. если поставить Stage.width, будут выезжать с правого бортика мульта
speed=50 //это коэффециент скорости (зависит от крайней точки и расстояния между вагонами)

for (i=1; i<int(xmax/rasstojanie)+3; i++) {
_root.attachMovie("train", "train"+i, this.getNextHighestDepth());
clip = _root["train"+i];
clip._x = (xmax-rasstojanie)+rasstojanie*i;
clip._y = 300;
clip.n=i-1
clip.onEnterFrame = function() {
if(this._x<-(_root.rasstojanie)) this._x=_root.xmax+_root.rasstojanie
this._x -= (_root.rasstojanie/_root.xmax)*_root.speed;
};
}

Короче, думай... Задачка-то простая   B)
« Последнее редактирование: 22 Января 2008, 04:30:40 от Vetal1992 »

Re: Не работает скрипт
« Ответ #2 : 22 Января 2008, 05:01:53 »
Спасибо!Все работает! :clap3:

+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Не работает скрипт