![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2009
Сообщений: 40
|
Уважаемые Дамы и Господа флэшеры. Вновь наступил на похожие грабли...
Задача: есть 4 мувика (позже будет больше). На сцену влазит только 3 (так задумано). Нужно сделать 2 кнопки, чтобы перематывать мувики на сцене вправо и влево. Как решал: создал 2 кнопки (далее описывать буду только левую, мотающую влево, ибо правая аналогична), которым присвоил код: var n:Number = _root.event1._x on (release) { if(_root.event1._x > n-300) { _root.event1._x -=10; _root.event2._x -=10; _root.event3._x -=10; _root.event4._x -=10; } } Добавлено через 41 минуту Вынес код за пределы кнопки и чутка подправил, теперь он выглядит вот так: var n:Number = _root.event1._x this.but_left.onRelease = function () { if(_root.event1._x > n - 300) { _root.event1._x -=10; _root.event2._x -=10; _root.event3._x -=10; _root.event4._x -=10; } } Добавлено через 44 минуты Подозреваю, что я сравниваю координату саму с собой... как мне получить координату х мувика в начале движения, зафиксировать это значение сравнивать новые координаты именно с ней???... Добавлено через 53 минуты Хмм... Есть кто живой тут???? Добавлено через 56 минут Переписал вот так: var n = _root.event1._x - 300; this.but_left.onRelease = function() { if (_root.event1._x> n) { _root.event1._x -= 10; _root.event2._x -= 10; _root.event3._x -= 10; _root.event4._x -= 10; } }; не помогло... |
|
|||||
|
Если хочешь сделать плавно - тебе понадобится выделенная функция которая будет вызываться из событийного обработчика нажатия кнопки посредством setInterval после вызова блокируешь кнопку, по завершении определённого количества вызовов функции в вызываемой функции делаешь clearInterval и разблокируешь кнопку и всё будет как тебе надо) Надеюсь помог.
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 40
|
Спасибо Гипербореец))))))) Пока не попробовал, то, что ты предложил, но... Нельза ли немного конкретнее, ну всмысле с примером кода? ибо у меня туго с золотым корнем и я еще не очень втыкаю в магию ActionScript)))
Попробовал через цикл, но где-то опять накосячил... |
|
|||||
|
В твоём случае должно быть как-то так:
var i:Number=0; var timer:Number=null; var Врубить:String=null; function Подвинься():Void{ _root.event2._x -= 10; _root.event3._x -= 10; _root.event4._x -= 10; if(i<30){ i++; } else{ i=0; clearInterval(time); eval(Врубить).enabled=true; } updateAfterEvent(); } this.but_left.onRelease = function() { timer=setInterval(Подвинься,600); this.enabled=false; Врубить=''+this; }; Последний раз редактировалось AzagThoth; 02.11.2009 в 15:56. |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 101
|
код не тестировал, плавное движение возможно либо нарисовать либо зациклить кадры со скриптом, либо использовать setInterval() и плавнее всего получается рисованное...
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 40
|
Благодарю, пытаюсь вкурить...))
Добавлено через 3 минуты стоп, второе это дополнение к первому или альтернатива? |
|
|||||
|
Регистрация: Sep 2009
Адрес: Челябинск
Сообщений: 43
|
альтернатива
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 40
|
Протестил оба варианта. Оба рабочие, однако о плавности не идет и речи. КАждое смещение происходит примерно через секунду после предыдущего. С чем это связано? Можно ли обеспечить непрерывность движения?
Добавлено через 11 минут С этим разобрался. работаю с первым вариантом, т.е. сейчас код выглядит вот так: var i:Number=0; var timer:Number=null; var vkl:String=null; function dvig():Void{ _root.event2._x -= 10; _root.event3._x -= 10; _root.event4._x -= 10; if(i<30){ i++; } else{ i=0; clearInterval(time); eval(vkl).enabled=true; } updateAfterEvent(); } this.but_left.onRelease = function() { timer=setInterval(dvig,8); this.enabled=false; vkl=''+this; }; Добавлено через 27 минут Хмхмхм... Еще немного переработал... как мне кажется в верном ключе... но проблему не решил....(((( Теперь все выглядит вот так: var i:Number = _root.event1._x; var time:Number = null; var vkl:String = null; function dvig():Void { if (i>-300) { _root.event1._x -= 10; _root.event2._x -= 10; _root.event3._x -= 10; _root.event4._x -= 10; } else { clearInterval(time); eval(vkl).enabled = true; } updateAfterEvent(); } this.but_left.onRelease = function() { timer = setInterval(dvig, 8); this.enabled = false; vkl = ''+this; }; хм в коде вместо > знак > Добавлено через 1 час 13 минут Ура! Друзья мои, всем огромное спасибо)) Довел код до необходимого результата!!! НО... Теерь кнопка срабатывает только после 2-х нажатий... Не могу понять почему... СЕйчас код выглядит вот так: this.but_left.onPress = function() { tmp = setInterval (walk,1,-10); walk = function(){ if(_root.event1._x < 50){ _root.event1._x += 3; _root.event2._x += 3; _root.event3._x += 3; _root.event4._x += 3; }else{ _root.event1._x -= 0; _root.event2._x -= 0; _root.event3._x -= 0; _root.event4._x -= 0; clearInterval(tmp) } } }; Хах))) Написал сообщение и понял))) Все ВСЕ ОК!!!))) ВСЕМ ОГРОМНОЕ СПАСИБО!!! Рабочий код: walk1 = function(){; if(_root.event1._x < 50){; _root.event1._x += 3; _root.event2._x += 3; _root.event3._x += 3; _root.event4._x += 3; }else{; _root.event1._x -= 0; _root.event2._x -= 0; _root.event3._x -= 0; _root.event4._x -= 0; clearInterval(tmp); }; }; this.but_left.onPress = function() { tmp = setInterval(walk1, 1, -10); }; walk2 = function(){; if(_root.event1._x > -250){; _root.event1._x -= 3; _root.event2._x -= 3; _root.event3._x -= 3; _root.event4._x -= 3; }else{; _root.event1._x -= 0; _root.event2._x -= 0; _root.event3._x -= 0; _root.event4._x -= 0; clearInterval(tmp); }; }; this.but_right.onPress = function() { tmp = setInterval(walk2, 1, -10); }; Данный код можно исполззовать для галереи))) |
|
|||||
this.but_left.onPress = function() { tmp = setInterval (walk,1); }; walk = function(){ if(_root.event1._x < 50){ _root.event1._x += 3; _root.event2._x += 3; _root.event3._x += 3; _root.event4._x += 3; }else{ _root.event1._x -= 0; _root.event2._x -= 0; _root.event3._x -= 0; _root.event4._x -= 0; clearInterval(tmp) } }
__________________
Играй. Это жизнь. Всё повторяется. Играй. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| движение мувика |
|
|