【问题标题】:Placement coordinates of bitmapData in AS3AS3中bitmapData的放置坐标
【发布时间】:2013-07-19 23:42:12
【问题描述】:

我以编程方式创建了一个矢量图形(矩形),重新定位了该图形,并设置了一个 MOUSE_MOVE 事件监听器来使用 getPixel() 跟踪图形的颜色信息。但是,bitmapData 被放置在舞台的 0,0 处,我不知道如何移动它以匹配图形的位置。

var coloredSquare:Sprite = new GradientRect(200, 200, 0xFFFFFF, 0x000000, 0xFF0000, 0xFFFF00);
coloredSquare.x = 100;

addChild(coloredSquare);

var coloredSquareBitmap:BitmapData = new BitmapData(coloredSquare.width, coloredSquare.height, true, 0);
coloredSquareBitmap.draw(coloredSquare);

coloredSquare.addEventListener(MouseEvent.MOUSE_MOVE, readColor);
function readColor(evt:Event):void
    {
    var pixelValue:uint = coloredSquare.getPixel(mouseX, mouseY);
    trace(pixelValue.toString(16));
    }

【问题讨论】:

    标签: actionscript-3 bitmapdata


    【解决方案1】:

    使用正方形的变换矩阵(也包含平移)作为draw() 方法的第二个参数

    例如

    coloredSquareBitmap.draw(coloredSquare,coloredSquare.transform.matrix);
    

    【讨论】:

    • 嗨,乔治。我试过了,但鼠标事件在有色广场的右半边丢失了。它似乎只适用于左半边。
    • +1。虽然concatenatedMatrix 更好,因为它适用于所有情况,不仅仅是在父级没有应用转换的情况下。
    • 哦,我现在明白我的错误了。你确实回答了这个问题,但我的鼠标事件导致了错误。谢谢。
    【解决方案2】:

    我不完全理解问题或代码。也许这会有所帮助:

    coloredSquareBitmap.draw(coloredSquare, coloredSquare.transform.concatenatedMatrix);
    

    【讨论】:

      【解决方案3】:

      使用

      var pixelValue:uint = coloredSquare.getPixel(coloredSquare.mouseX, coloredSquare.mouseY);
      

      这样,mouseX / mouseY 将位于彩色方块的本地,因此位图重复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 2010-11-14
        • 1970-01-01
        相关资源
        最近更新 更多