Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   BitmapData.draw() если содержимое располагается и в отрицательных координатах (http://www.flasher.ru/forum/showthread.php?t=100982)

fljot 08.09.2007 18:42

BitmapData.draw() если содержимое располагается и в отрицательных координатах
 
Вложений: 1
неужели никак не срисовать в BitmapData клип, если его содержимое начинается не в (0, 0) а в отрицательных координатах? есть там параметр clipRect:Rectangle (default = null) — A Rectangle object that defines the area of the source object to draw. If you do not supply this value, no clipping occurs and the entire source object is drawn. , но с отрицательными он зараза будто не хочет работать.

Код:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.*;

var myBitmapData:BitmapData = new BitmapData(frame.width, frame.height);
var sourceRect:Rectangle = new Rectangle(-20, -20, frame.width, frame.height);
myBitmapData.draw(frame, null, null, null, sourceRect);
var bmp:Bitmap = new Bitmap(myBitmapData, 'auto', true);
this.addChild(bmp);
bmp.x = bmp.y = 100;
bmp.rotation = 10;
//получается клип, видимый всё-равно с точки (0, 0) оригинала

где требуется: png для вращения. точка, вокруг которой надо вращать, устанавливается визуально (для удобства) ну и её координаты (0, 0).


если проблема напрямую не решится - для нашедших тему - есть варианты обхода:

1. неудобный путь - много клипов в библиотеке: у вас два клипа: mcRotate, который вы будете вращать, и mcBmp, который вложен в mcRotate и расположен так, чтобы точка отн. которой будет вращение лежит в 0, 0. в mcBmp лежит png в 0, 0. делаете BitmapData.draw() с клипа mcBmp, получившийся потом клип кладёте в mcRotate с теми же координатами, что и mcBmp. mcBmp можно удалить. работает, но в процессе приходится делать доп. клип в библиотеке - муторно.

2. использовать функцию поворота, отн какой-то точки. кладём png в клип в ноль, делаем с него клип через BitmapData.draw() и размещаем там же, потом вертим относительно клипа-"гвоздика" (в случае висящей на стене рамы=)). неудобство - в дополнении к классу-маятнику надо вручную всегда делать "гвоздик".. а хотелось бы без этого. и для поворота придётся считать синусы-косинусы, а можно было бы стандартным rotate)

miramax 08.09.2007 20:04

draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

почитайте про второй аргумент функции.

fljot 08.09.2007 23:30

воистину! спасибо!

хотя перестав тупить я нашёл галочку allow smoothing в битмат пропертис.. так что ничего рисовать-копировать вобщем в этой ситуации не надо, когда png'шки в библиотеке лежат


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

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