如何使用beginBitmapFill不重复?(AS3)

时间:2012-08-07 06:14:36

标签: actionscript-3 flash actionscript

我的代码:

myCircle = new Shape();

function doStuffWithBitmapData(bmd:BitmapData):void
        {

            myCircle = new Shape();
            var matrix:Matrix = new Matrix();
            matrix.translate(0, 0);
            myCircle.graphics.beginBitmapFill(bmd, matrix, false);
            myCircle.graphics.drawCircle(0, 0, 17);
            myCircle.graphics.endFill();
            myCircle.x = 40;
            myCircle.y = 63;

            addChild(myCircle);

            // your code

            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }

        private function onEnterFrame(e:Event)
        {
            myCircle.rotation += 3;


        }

我需要用图像填充圆圈,但图像重复多次,但如果我将重复设置为假,图片会更大,我可以不重复,同时不要更改填充图像的大小?

2 个答案:

答案 0 :(得分:0)

我不太确定bitmapfill方法,但创建自己的位图和bitmapData,然后使用图像的bitmapdata,你可以随意操纵图像像素/数据。

- 使用bitmapData类的setPixel / setPixel32方法将有助于您的任务(谷歌是您的朋友)

Adob​​e的帮助:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html

答案 1 :(得分:0)

请仔细查看BitmapData类文档的 draw() 方法。这非常重要。

并参考以下代码。

import flash.display.BitmapData;
import flash.display.Shape;
import flash.display.Bitmap;

var myCircle:Shape;

var bmd:BitmapData = new BitmapData(600,400,false,0xffffff);
var bmp:Bitmap = new Bitmap(bmd);
this.addChild(bmp);

var circleBitmapData:BitmapData = new BitmapData(20,20,false,0xffffff * Math.random());

myCircle = new Shape();
var matrix:Matrix = new Matrix();
myCircle.graphics.beginBitmapFill(circleBitmapData);
myCircle.graphics.drawCircle(0, 0, 20);
myCircle.graphics.endFill();
myCircle.x = 40;
myCircle.y = 63;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event)
{
    bmd.draw(myCircle, myCircle.transform.matrix, myCircle.transform.colorTransform);
    myCircle.x = Math.random() * stage.width;
    myCircle.y = Math.random() * stage.height;
}