addChild()/隐式强制 - Flash AS3

时间:2015-05-04 17:28:10

标签: actionscript-3 flash

我是Flash的新手。我知道它已经过时了,但我正在研究的项目是用Flash编写的。

我目前的任务是从.jpg文件中的任何像素获取RGB数据。到目前为止,我已经做了以下事情:

我已将图像保存为.fla文件,并将图像本身转换为自己的自定义类,名为" StageWheel",以BitmapData作为基类。但是,当我这样做时:

  var sWheel:StageWheel = new StageWheel();
  addChild(sWheel);
  sWheel.addEventListener(MouseEvent.CLICK, getColorSample);

  var bitmapWheel:BitmapData = new BitmapData(sWheel.width, sWheel.height);

我收到错误:

  

"将StageWheel类型的值隐式强制转换为不相关的类型flash.display.DisplayObject"

addChild(sWheel);

这个错误是什么意思?我可以不使用addChild以这种方式向舞台添加内容吗?

修改

这对@LDMS有用,谢谢。我现在正试图在以后这样做:

var rgb:uint = bitMapWheel.getPixel(sWheel.mouseX,sWheel.mouseY);

并收到错误

  

" 1061:通过静态类型flash.display:Bitmap的引用调用可能未定义的方法getPixel。"

这是什么意思?我可以不在位图上使用getPixel吗?对于新手感到抱歉,由于某种原因,我很难学习Flash。

1 个答案:

答案 0 :(得分:1)

你的StageWheel类是BitmapData,它本身不是可以添加到舞台的显示对象。

您需要将位图数据包装到Bitmap中,以使其成为显示对象。

var sWheel:BitmapData = new StageWheel(); //This is bitmap data, which is not a display object, just data at this point.

//to display the bitmap data, you need to create a bitmap and tell that bitmap to use the bitmap data
var bitmapWheel:Bitmap = new Bitmap(sWheel);

//now you can add the bitmap to the display list
addChild(bitmapWheel);

修改 对于问题的第二部分,您需要访问位图的位图数据以使用getPixel

bitmapWheel.bitmapData.getPixel(bitmapWheel.mouseX,bitmapWheel.mouseY);