Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   draw с координатами (http://www.flasher.ru/forum/showthread.php?t=148047)

a7z 20.12.2010 16:42

draw с координатами
 
[IMG]http://s008.***********/i305/1012/b1/c5771f80cb29.jpg[/IMG]
дурацкий вопрос, но чего-то не могу найти ответ...
как мне нарисовать только выделенный фрагмент B из сцены A?
На данный момент сделал так. Делаю bitmapData размером с фрагмент B и потом двигаю сцену с помощью матрицы в этот фрагмент, но как-то это криво и если рисовать в фрагменте много спрайтов, то работает хреново...
Как правильно нарисовать заданную область сцены с нужными координатами(не нулевыми)?

samana 20.12.2010 17:02

Вот так можно:
Код AS3:

var bmd:BitmapData = new BitmapData(100, 100, true, 0xFF000000);
var matrix:Matrix = new Matrix();
matrix.ty = -100;//начнёт рисовать с точки y=100
matrix.tx = -100;//начнёт рисовать с точки x=100
 
bmd.draw(stage, matrix);
 
var bm:Bitmap = new Bitmap(bmd);
addChild(bm)


a7z 20.12.2010 17:06

Цитата:

Сообщение от samana (Сообщение 958720)
Вот так можно:
Код AS3:

var bmd:BitmapData = new BitmapData(100, 100, true, 0xFF000000);
var matrix:Matrix = new Matrix();
matrix.ty = -100;//начнёт рисовать с точки y=100
matrix.tx = -100;//начнёт рисовать с точки x=100
 
bmd.draw(stage, matrix);
 
var bm:Bitmap = new Bitmap(bmd);
addChild(bm)


пробую

mikhailk 20.12.2010 17:20

Код AS3:

private function crop100x100 (contentLayer:Sprite,dx:int,dy:int) : BitmapData
{
        var bmpdata:BitmapData = new BitmapData(100, 100);                       
        var rect:Rectangle = new Rectangle(0, 0, 100, 100);
        var matrix:Matrix = new Matrix ();
        matrix.tx = -dx; 
        matrix.ty = -dy; 
        bmpdata.draw(contentLayer,matrix,null,null,rect);
        return(bmpdata);
}


a7z 20.12.2010 17:33

Цитата:

Сообщение от samana (Сообщение 958720)
Вот так можно:
Код AS3:

var bmd:BitmapData = new BitmapData(100, 100, true, 0xFF000000);
var matrix:Matrix = new Matrix();
matrix.ty = -100;//начнёт рисовать с точки y=100
matrix.tx = -100;//начнёт рисовать с точки x=100
 
bmd.draw(stage, matrix);
 
var bm:Bitmap = new Bitmap(bmd);
addChild(bm)


сенкс, работает!:victory:

Цитата:

Сообщение от mikhailk (Сообщение 958728)
Код AS3:

private function crop100x100 (contentLayer:Sprite,dx:int,dy:int) : BitmapData
{
        var bmpdata:BitmapData = new BitmapData(100, 100);                       
        var rect:Rectangle = new Rectangle(0, 0, 100, 100);
        var matrix:Matrix = new Matrix ();
        matrix.tx = -dx; 
        matrix.ty = -dy; 
        bmpdata.draw(contentLayer,matrix,null,null,rect);
        return(bmpdata);
}


кста, чего-то я пробовал с Rectangle, но не довёл...:wacko:

mikhailk 20.12.2010 17:50

Rectangle нужен только для ограничения области рисования в исходном спрайте.
Будет работать и без него.

a7z 20.12.2010 17:57

Цитата:

Сообщение от mikhailk (Сообщение 958739)
Rectangle нужен только для ограничения области рисования в исходном спрайте.
Будет работать и без него.

ага,уже понял


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

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