0

編集:それ自体が機能する変換/コピープロセス、コピーするステージのどの部分であるビットマップデータを伝える方法がわかりません-キャンバスをx = 0 y = 0にムービーすることで、その問題を解決しようとしましたが、変更は表示されませんでした。変更を示したのは、描画する前にキャンバスをゼロに移動したことだけでしたが、座標の変更はビットマップにのみ影響するため、負の座標を持つ描画の部分はコピーされないため、これは完全にバグがあります。あなたは絵を描き始めます

古いエントリ:Sprite.graphicsをbitmapDataに変換したいのは、ユーザーがSprite.grahpics内にある線をペイントできるdrawToolを持っているからです。

これらの行をbitmapdataに変換する必要があります。これにより、後で変形できるためですが、これは使用できません。

Bitmapdata.draw(Sprite.graphics);

また、Sprite.graphicsの代わりにSpriteのみを使用しても、結果は表示されません= \ヘルプが必要です!

4

3 に答える 3

2

(0,0)以外の原点から特定の部分のみを描画する場合は、マトリックスを使用します。これに関するAdobeのドキュメントにはたくさんありますが、ここに良い例があります。

http://www.quasimondo.com/archives/000670.php

于 2012-08-22T15:45:31.890 に答える
0

graphics描画時にのみ使用します。実際のSpriteオブジェクトには必要なものが含まれているため、慣例に従って、次のようにします。

BitmapData.draw(Sprite);

文字通りの例ですが:

var mySprite:Sprite = new Sprite();
// add lines etc using mySprite.graphics

var myBitmapData:BitmapData = new BitmapData(mySprite.width, mySprite.height);
myBitmapData.draw(mySprite);
于 2012-08-22T14:15:51.173 に答える
0

使い方がよくわからないと思いますBitmapData.draw()

BitmapData.draw()All DisplayObject(Sprite、MovieClip、Shape、Text、Video ...)の描画が可能です。彼らはIBitmapDrawableを持っているからです(詳細はadobeドキュメントを参照してください最高の先生です)。

ペイントボードを実装したい場合。以下のコードを参照してください。非常にシンプルなペイントボード。しかし、いくつかはあなたを助けます。

コピー&ペーストしてみてください。

import flash.display.Sprite;
import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.events.MouseEvent;

var isDraw:Boolean = false;
var brush:Sprite =new Sprite();
brush.graphics.beginFill(0x0000ff);
brush.graphics.drawCircle(0,0,5);
brush.graphics.endFill();

var canvasData:BitmapData = new BitmapData(600,400, false);
var canvas:Bitmap = new Bitmap(canvasData);
addChild(canvas);

stage.addEventListener(MouseEvent.MOUSE_DOWN, onDrawStart);
stage.addEventListener(MouseEvent.MOUSE_UP, onDrawStop);
stage.addEventListener(Event.ENTER_FRAME, render);

function onDrawStart(e:MouseEvent):void
{
    isDraw = true;
}

function onDrawStop(e:MouseEvent):void
{
    isDraw = false;
}

function render(e:Event):void
{
    if(!isDraw) return;

    brush.x = mouseX;
    brush.y = mouseY;

    canvasData.draw(brush,brush.transform.matrix);
}
于 2012-08-22T14:27:06.567 に答える