Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
1

Передвижение спрайтов с разной скоростью

11.08.2015, 16:10. Показов 968. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Проблема в следующем, что имеем 2 многоугольника, у одного скорость 0.5, у второго 1. На деле имеем что движутся они с одинаковой скоростью


код элементарный,


ActionScript 3
1
2
3
4
5
6
7
8
public function MoveBody (object:DisplayObject ):void // перемещаем центр спрайта не апдейтя его вершин
{
 
    trace("object.x0=",object.x);
    object.x+=Vx; //Vx это постоянная скорость.
    trace("object.x1=",object.x);
 
}
прилагаю свфку
Вложения
Тип файла: swf rectangle.swf (15.9 Кб, 6 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2015, 16:10
Ответы с готовыми решениями:

Поезд ехал t1 ч со скоростью v1 км / ч, t2 ч со скоростью v2 и t3 ч со скоростью v3. Определить пройденные пути с разной
Поезд ехал t1 ч со скоростью v1 км / ч, t2 ч со скоростью v2 и t3 ч со скоростью v3. Определить...

Потоки работают с разной скоростью
public class Person extends Thread{ private boolean isCancel = false; private int count = 0;...

Выдача udp с разной скоростью
Всем добра. Пытаюсь выдавать данные размером по 1000 байт с разной скоростью сетевуха 1Гбит/c. У...

Движение шариков по окружности с разной скоростью
Здравствуйте. Дана квадратная область с координатами от 1 до 100, внутри которой размещаются...

17
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
11.08.2015, 16:23 2
а в чем прикол?
Вижу какойто object.x += Vx;
это один клип?
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 16:25  [ТС] 3
Vx это скорость, у нас 2 спрайта. Вызываем функцию перемещения для каждого через определенные интервалы времени.
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
11.08.2015, 16:36 4
а как вызываете?
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 16:41  [ТС] 5
ActionScript 3
1
2
this.timer=new Timer (30,500) ; 
this.timer.addEventListener(TimerEvent.TIMER , GoForest ) ;
внутри функции Goforest
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
11.08.2015, 16:54 6
покажи код хендлера
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 17:06  [ТС] 7
ActionScript 3
1
2
3
4
5
6
7
8
9
10
 public function GoForest (e:TimerEvent) 
 {  
                        MoveBody(this.Rect ,t2) ;
                                         
            Vx+=Fx/Mass * t2; // ускорения нет, поэтому приращение будет 0
            Vy+=Fy/Mass * -t2;
            
            rotateAroundCenter(Rect, t2) ; // угловая скорость равна 0
 
}
Добавлено через 1 минуту
параметр t2 тут будет 1, и поэтому Dx=Vx * t2 = Vx, поэтому я опустил параметр t2 в коде выше

Добавлено через 2 минуты
все дело в функции поворота я ее закомментил и заработало, но теперь надо ее как-то подружить все же с функцией сдвига тела

вот функция поворота

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public function rotateAroundCenter(object:DisplayObject, t:Number):void // вращаем спрайт но не апдейтим вершины
{
var Znak : int = 1 ;
        (t == 0 ) ? Znak=1 : Znak = Math.abs(t) / t ;
        var angle : Number = Math.abs(t) * AngVel + ((Ftorq/Mass)/2) * t * t * Znak ; 
        var center : Point = new Point(XX,YY) ;
        
        angle += object.rotation;
        var a0:Number = - object.rotation * Math.PI / 180;
        var s0:Number = Math.sin(a0);
        var c0:Number = Math.cos(a0);
        var dX0:Number = object.x - center.x;
        var dY0:Number = object.y - center.y;
 
        object.rotation = 0;
        object.x = Math.round(center.x + dX0 * c0 - dY0 * s0);
        object.y = Math.round(center.y + dX0 * s0 + dY0 * c0);
 
        // new rotation
        var r:Number = angle * Math.PI / 180;
        var s:Number = Math.sin(r);
        var c:Number = Math.cos(r);
        var dX:Number = object.x - center.x;
        var dY:Number = object.y - center.y;
 
        object.rotation += angle;
        object.x = center.x + dX * c - dY * s;
        object.y = center.y + dX * s + dY * c;
}
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
11.08.2015, 17:08 8
ты вызываешь MoveBody для какого-то Rect, Я предполагаю, что это первый спрайт. А где же тогда второй? Ужасные названия переменных, оттого и каша такая
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 17:12  [ТС] 9
да, это первый спрайт. У меня 2 класса, в каждом таймер на который повешена функция перемещения и поворота тела. Название переменной собирался менять, было лень.
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
11.08.2015, 17:18 10
Значит ты делаешь им движение с одним и тем же шагом, и одним и темже интервалом времени
Цитата Сообщение от bazelbodayFaron Посмотреть сообщение
Vx
Добавлено через 1 минуту
Уменьши интервал в одном таймеров в два раза, и вся эта костыль машина должна работать по твоему требованию
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 17:29  [ТС] 11
увы так нельзя сделать)

Добавлено через 2 минуты
суть в том что у нас сталкиваются два полигона, все замечательно.Все обсчитывается правильно, но дело в том что спрайт съезжает с вершин к которым он должен быть прикреплен.

Добавлено через 3 минуты
а съезжает он тогда, когда скорости малы.
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 17:39  [ТС] 12
вот наглядно показывает ситуацию свфка, подождите 30 секунд и увидите
Вложения
Тип файла: swf rectangle.swf (15.9 Кб, 7 просмотров)
0
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
11.08.2015, 17:42 13
Цитата Сообщение от bazelbodayFaron Посмотреть сообщение
подождите 30 секунд
bazelbodayFaron, она у меня на 2й зависла и выключилась.

Не по теме:

Цитата Сообщение от Saldoran Посмотреть сообщение
вся эта костыль машина
:D

0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 17:59  [ТС] 14
у меня работает, проверил на двух компах

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

Добавлено через 1 минуту
мне нужно чтобы спрайт вращался и перемещался адекватно

Добавлено через 1 минуту
банально и просто, вращаться он может. Перемещаться тоже при малой скорости. А вот вместе повернуться и переместиться у него не получается нормально.

Добавлено через 2 минуты
функцию поворота и перемещения я показал. А как тогда сделать чтобы это не было костыль машиной?
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
12.08.2015, 11:02 15
Предлагаю тебе все переписать. Посмотри код и нейминг конвеншн. И избавься от зависимостей.
Я так понимаю, ты лабу какую-то делаешь и все что тебе нужно сделать, это подкрутить чтоб ехало "абы как".
Если же нет, то лучше все заного написать, ибо за такой код бьют по лицу
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
12.08.2015, 13:25  [ТС] 16
нет, мне нужно чтобы ехало не абы как а нормально, есть просто спрайт, для которого вызывается функция поворота и перемещения и все, но спрайт при малых скоростях неправильно движется. Вот вся проблема. Нормальный код, вы все придираетесь к имени спрайта. Что все переписать? функция поворота вполне нормальная, функция перемещения тоже.
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
12.08.2015, 13:28 17
Цитата Сообщение от bazelbodayFaron Посмотреть сообщение
функция поворота вполне нормальная, функция перемещения тоже.
Значит проблемы нет
0
3 / 3 / 1
Регистрация: 30.05.2013
Сообщений: 339
12.08.2015, 14:05  [ТС] 18
если мы только вращаем или только двигаем все работает как надо, но не когда тело движется и поворачивается
0
12.08.2015, 14:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2015, 14:05
Помогаю со студенческими работами здесь

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

Движение pictureBox с разной скоростью по эллиптической траектории
Как сделать движение нескольких pictureBox с разной скоростью по эллипсу private void...

USB модем работает с разной скоростью в течение дня
Есть два модема от МТС: 7,2 и 21,6 мбит/с. Недавно обратил внимание, что с утра и ночью модемы...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru