Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Bitmap точное копирование (http://www.flasher.ru/forum/showthread.php?t=210720)

Andrej 26.04.2015 23:21

Bitmap точное копирование
 
Добрый вечер.

Тут такая проблемка. Как точно скопировать с одной битмапки в новую. Я тут кое, что написал, но видимо не совсем то. Получается, что я беру из битмапки, что-то частично, выборочно.

puzyr (пузырь) это мувик на сцене, круг 10x10, я хочу им закрасить ну например квадрат.
Тут код такой настряпал вобщем:
Код AS3:

function drawImage(event:MouseEvent):void {
var myBitmap:BitmapData = new BitmapData(puzyr.width, puzyr.height, false);
myBitmap.draw(puzyr,  new Matrix());
var matrix:Matrix = new Matrix();
//matrix.rotate(Math.PI/4);
graphics.beginBitmapFill(myBitmap, matrix, true);
graphics.drawCircle(mouseX, mouseY, 10);
graphics.endFill();
 }
 
stage.addEventListener(MouseEvent.MOUSE_MOVE, drawImage);

Спасибо.

caseyryan 27.04.2015 10:34

Не надо там создавать новую, пустую матрицу, это бессмысленно.
Код AS3:

var myBitmap:BitmapData = new BitmapData(puzyr.width, puzyr.height, false);
myBitmap.draw(puzyr);
//и дальше вообще матрица не нужна
graphics.beginBitmapFill(myBitmap, null, true);
graphics.drawCircle(mouseX, mouseY, 10);
graphics.endFill();


Andrej 27.04.2015 14:23

Вложений: 1
Цитата:

Сообщение от caseyryan (Сообщение 1181731)
Не надо там создавать новую, пустую матрицу, это бессмысленно.
Код AS3:

var myBitmap:BitmapData = new BitmapData(puzyr.width, puzyr.height, false);
myBitmap.draw(puzyr);
//и дальше вообще матрица не нужна
graphics.beginBitmapFill(myBitmap, null, true);
graphics.drawCircle(mouseX, mouseY, 10);
graphics.endFill();


Ок, хорошо спасибо за совет. Но проблемка осталось, вобщем вот скрин, два шара рядом, оригинал и то, что получается, как это можно исправить.

ZackMercury 27.04.2015 14:31

Решить то можно, но вопрос - зачем такую муть делать?
Нарисовали вы в битмапу объект, а теперь вот так:

Код AS3:

var myBitmapData:BitmapData = new BitmapData(puzyr.width, puzyr.height, false);
myBitmapData.draw(puzyr);
addChild(new Bitmap(myBitmapData));

Просто создаём битмап, кормим его битмапдатой с нашим шариком и добавляем в список отображения.
P.S. Ааа, я понял фишку, почему у вас только красный кусок отображается. У вас центр привязки объекта находится в центре. Он должен быть в левом верхнем углу. Выровняйте с помощью панели Align.

Andrej 27.04.2015 22:07

Упс да насчет центрирования по левому углу, чет стормил, правда все равно не совсем то получается. А насчет addChild(new Bitmap(myBitmapData)); эт то понятно, вобщем я хочу сделать типа мы моем машину, например мылим мочалкой и заполняем пузырями :) ну и так далее. Игрушку вобщем делаю. Сначало думал попроще сделать, типа мылим в одном месте а она вся мылится, но эт как то несерьезно, видел такие игры мылиш колесо и мылится вся машина. Вобщем такая вот история. Вроде как выход придумал, можно поробовать сделать типа какой нить bur и тогда будет ок. ZackMercury, caseyryan благодарю вас за помощь.

ZackMercury 27.04.2015 23:49

Для этого существуют маски.


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

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