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

mikhailk 12.01.2015 17:54

да-да, сейчас как раз проверяю.
вроде крутится.

Zebestov 12.01.2015 18:11

Вложений: 2
И все же для тестов попробуй на слабом компе вот это.
bitmapRotationTest.swf   (47.6 Кб)

mikhailk 12.01.2015 19:06

интересно, но на слабом компе все равно подтормаживает

Zebestov 12.01.2015 19:10

ясно ) ну, надо же было убедиться!

in4core 12.01.2015 20:18

Цитата:

да-да, сейчас как раз проверяю.
вроде крутится.
То есть удачно?

mikhailk 13.01.2015 11:08

Короче, на мощной/современной машине крутится в любом варианте.
На слабой/старой/убитой машине крутится с рывками так же в любом варианте.

Начинаю думать, что чудес не случилось.

nubideus 13.01.2015 11:55

mikhailk, ну если не хочешь drawTriangles юзани rotationZ += 0.0001 (как там включать 3d рендер? вроде достаточно было scaleZ = 1)

mikhailk 13.01.2015 14:02

Цитата:

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

Zebestov 13.01.2015 14:32

Это я набокопорил с координатами =) вектор vertices неправильно собран.
Вот исправленный код метода drawImage:

Код AS3:

function drawImage():void
{
        var a0:Number = angle + diagonalAngle;
        vertices[0] = Math.cos(a0) * diagonalSemiLength + center.x;
        vertices[1] = Math.sin(a0) * diagonalSemiLength + center.y;
 
        var a1:Number = angle + Math.PI - diagonalAngle;
        vertices[2] = Math.cos(a1) * diagonalSemiLength + center.x;
        vertices[3] = Math.sin(a1) * diagonalSemiLength + center.y;
 
        var a2:Number = angle - Math.PI + diagonalAngle;
        vertices[4] = Math.cos(a2) * diagonalSemiLength + center.x;
        vertices[5] = Math.sin(a2) * diagonalSemiLength + center.y;
 
        var a3:Number = angle - diagonalAngle;
        vertices[6] = Math.cos(a3) * diagonalSemiLength + center.x;
        vertices[7] = Math.sin(a3) * diagonalSemiLength + center.y;
 
        canvas.graphics.clear();
        canvas.graphics.beginBitmapFill(image, null, false, true);
        canvas.graphics.drawTriangles(vertices, indices, uvtData);
}


mikhailk 13.01.2015 14:39

Да, так все работает. Фенкс.


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

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