Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Повернуть картинку загруженную через Loader (http://www.flasher.ru/forum/showthread.php?t=132734)

SamFR 28.11.2009 16:55

Цитата:

Сообщение от zakatnov (Сообщение 868848)
...аргументом прям это и передавать? или же тут просто образно написано

Э, как бы вам сказать... Предполагается, что на месте IMG_WIDTH должна быть ширина загруженного изображения (image.width), а на месте IMG_HEIGHT – высота (image.height). Величина radius обозначает радиус, то есть расстояние от центра картинки до центра окружности.

zakatnov 28.11.2009 22:02

спасибо большое, Felicast
только все равно он вращает их относительно верхнего левого угла а не центра ((

zakatnov 28.11.2009 22:06

Вложений: 1
вот что получается:

zakatnov 28.11.2009 22:07

только если я сейчас поверну их все через матрицу, мне потом надо будет заставить это колесо крутится, это можно как нибудь реализовать через матрицу?

SamFR 28.11.2009 23:47

Цитата:

Сообщение от zakatnov (Сообщение 868891)
только если я сейчас поверну их все через матрицу, мне потом надо будет заставить это колесо крутится, это можно как нибудь реализовать через матрицу?

Легче всего добавить все эти картинки в контейнер (они будут расположены по кругу относительно его центра), а крутить уже сам контейнер. Можно, конечно, и через матрицу трансформации.

Felicast 29.11.2009 01:06

Цитата:

только все равно он вращает их относительно верхнего левого угла а не центра ((
да вы правы, сам попробовал только что. немного надо модернизировать:
Код AS3:

var images:Array = new Array();
var imageCount:int = 10;
var circleCenter:Point = new Point(300, 300);;
var dr:Number = (Math.PI * 2) / imageCount;
var radius:int = 200;
 
var tmpImage:Bitmap = null;
var bitmapData:Avatar = new Avatar(0, 0);
for (var i:int = 0; i < imageCount; ++i)
{
        tmpImage = new Bitmap(bitmapData);
        tmpImage.x = circleCenter.x;
        tmpImage.y = circleCenter.y;
        tmpImage.smoothing = true;
        images.push(tmpImage);
        addChild(tmpImage);
}
 
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
 
var iterator:Number = 0.0;
 
function enterFrameHandler(event:Event):void
{
 
        var transformMatrix:Matrix;
        for (var i:int = 0; i < images.length; ++i)
        {
                transformMatrix = new Matrix();
                transformMatrix.translate(-images[i].bitmapData.width / 2, -images[i].bitmapData.height / 2 - radius);
                transformMatrix.rotate(iterator + dr * i);
                transformMatrix.translate(circleCenter.x, circleCenter.y);
                images[i].transform.matrix = transformMatrix;
        }
        graphics.lineStyle(1, 0x000000);
        graphics.drawCircle(circleCenter.x, circleCenter.y, 2);
        iterator += 0.01;
}


zakatnov 30.11.2009 23:54

Вот Felicast, огромное спасибо, только если вам не затруднит, можно с пояснениями, просто в вашем примере есть вещи о которых я и не подозревал :) и не могу понять откуда берутся картинки, буду просто очень сильно благодарен!!

SamFR 01.12.2009 04:01

в библиотеке должна лежать картинка (не мувик, а именно картинка), залинкованная как Avatar, и со значением поля Base class равным flash.display.BitmapData.

если хотите грузить через лоадер – вместо объектов Bitmap используйте объекты Loader, либо выдирайте из них битмапдату.


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

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