【问题标题】:Actionscript 3 - How To Check A Random Pixel Of A SpriteActionscript 3 - 如何检查 Sprite 的随机像素
【发布时间】:2013-05-09 13:49:47
【问题描述】:

我有一个以随机且复杂的方式绘制的精灵。像素要么透明,要么不透明。现在我需要检查像素new Point(10, -5) 是否透明。

我该怎么做?


  • 这不适用于碰撞检测。
  • 我还绘制了精灵图形的负片区域。它没有居中。

解决方案:

主要问题是在负区域绘图。我自己想通了:

var bitmapData: BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x0);
var rect: Rectangle = sprite.getBounds(sprite);
var mat: Matrix = new Matrix();
mat.translate(-rect.left, -rect.top);
bitmapData.draw(sprite, mat);
bitmapData.getPixel32(xCoordToTest - rect.left, yCoordToTest - rect.top);
// etc

【问题讨论】:

    标签: actionscript-3 matrix sprite pixels


    【解决方案1】:

    创建新的 BitmapData 对象并在其上绘制您的精灵。然后检查所需的 BitmapData 像素。

    var bitmapData:BitmapData = new BitmapData(mySprite.width,mySprite.height,true,0x00000000);
    bitmapData.draw(mySprite);
    bitmapData.getPixel32(10,5);
    

    【讨论】:

      【解决方案2】:

      就像 SzRaPnEL 所说,将您的精灵绘制到一个 BitmapData 对象中,并将第三个参数设置为 true(启用透明度)。 那么……

      var pixelValue:uint = bitmapData.getPixel32(xCoordToTest, yCoordToTest);
      var alphaValue:uint = pixelValue >> 24 & 0xFF;
      

      根据 BitmapData 在线文档,应该可以... http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#getPixel32()

      【讨论】:

      • 你们都错过了主要问题。
      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 2023-04-02
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多