Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   плавное движение по наклонной линии (http://www.flasher.ru/forum/showthread.php?t=173340)

viktorami 29.12.2011 23:30

плавное движение по наклонной линии
 
мне понадобилось двигать спрайт по наклонной линии. по некоторым причинам point.polar решил не использовать и сделал так:
Код AS1/AS2:

y= 230-(Math.tan(angle)*(event.stageX ));

смещение y по вертикали считаем как неизвестный катет прямоугольного треугольника при известном другом(x) и угле.
Двигатся то спрайт двигается- под нужным углом.
Но - если двигать очень медленно - то заметны перескакивания спрайта с пикселя на пиксель.
как этого избежать?
есть подозрение что неправильно округляется посчитаное смещение
к примеру 5.7991 записывается в координату y как 5.79 то есть не округляется - а именно отбрасывается. как здесь можно решить эту задачку?

ProxyGreen 30.12.2011 09:29

Можно заюзать TweenLite какой-нибудь. Он задачку и решит.

viktorami 30.12.2011 11:21

так а в теории в чем причина и каков путь решения?

-De- 30.12.2011 13:54

Возможно там есть битмапы с pixelSnapping true. Тогда поставить им его в false.

viktorami 30.12.2011 14:24

специально ничего не ставил. но когда трейсом смотерл кординату у - она действительно как то странно меняется- не все значения а по -0.25 как то что ли...

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

Добавлено через 12 минут
то есть уменя есть MoveClip(ну или спрайт) а в нем уже - битмап. но двигается то сам movieclip!
ну попробовал я к самому битмапу(при создании его внутри мови клипа применить так)
Код AS3:

var imageTextureMap:BitmapData=event.target.content.bitmapData;
var myImage:Bitmap = new Bitmap(imageTextureMap);
myImage.pixelSnapping="never";;
addChild(myImage as Bitmap);

не помогло. а у самого movieclip этого свойства - нет!

Добавлено через 29 минут
почему то, при записи в координату y значения округляются так - каждая новая строка- это новый опос mousemove

419.45
419.45
419.7
419.7
419.2
419.2
418.95
418.95
418.2
418.2
видите - при движении - бизкие значения вообще равны а потом сразу - перескок. вот там и получается лесенка- почему - не понятно

-De- 30.12.2011 15:02

А smoothing если битмапе этой поставить? Двигается-то клип, но пикселы-то битмапы тоже двигаются и как они изображаются - определяется свойствами битмапы. Ещё что-то говорили, что может помочь скейл 100.1% поставить, но по-моему то про снаппинг.
Да, положения лепятся к твипам. С этим ничего не сделать, с этим придётся жить %)
Но и смещения на 1/20 пиксела на глаз не заметить. На пиксель или пол - можно. И вот у вас это на пиксел скачок, а не на 1/20. Если у вас эта 1/20 каким-то образом множится и становится ближе к пикселу - то тоже может быть такой эффект.

viktorami 30.12.2011 15:38

http://www.studia-kuhni.ru/calc/1/
вот сдесь как то ведь сделано)

Добавлено через 55 секунд
Ещё что-то говорили, что может помочь скейл 100.1% поставить
а это что подробнее можно?

Alex Lexcuk 31.12.2011 03:50

Что-бы дергалось плавней надо попробовать использовать при перемещении не координаты дисплейобъекта а просто Number числа, так они не будут округляться, дисплей объект их округлит себе до сотых, а визуально будет лучше.
Код AS3:

var angle:Number = тра-та-та.
var y:Number = 230-(Math.tan(angle)*(event.stageX ));
 
sprite.y = y;


viktorami 31.12.2011 23:18

сори, но что то я не понял сути. а я разве не так делал? посчитать да присвоить!

Alex Lexcuk 01.01.2012 14:00

Тогда не знаю, а как такой вариант
419
419
419
419
419
419
418
418
418
418

поставить спрайту
Код AS3:

sprite.y = int(y)

всё равно визуально не понятно, сместился он на 1 пиксель или на 1 и долю пикселя.


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

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