newBitmapData
public static FREBitmapData newBitmapData (int width, int height, boolean transparent, Byte[] fillColor)
创建一个 FREBitmapData 对象,该对象可以作为一个 BitmapData 实例返回到扩展的 ActionScript 端。
参数:
-
width
-
宽度(以像素为单位)。在 AIR 3+ 中,对位图的宽度和高度没有任何限制(除了 ActionScript 带符号整数的最大值)。但是,仍会有实际内存限制。位图数据会占用 32 位内存(每像素)。
-
height
-
高度(以像素为单位)。
-
transparent
-
指定此位图是否使用 alpha 通道。此参数对应于创建的 FREBitmapData 的
hasTransparency()
方法和 ActionScript BitmapData 对象的
transparent
属性。
-
fillColor
-
32 位,带有要填充新位图的 ARGB 颜色值。如果
transparent
参数为
false
,则会忽略颜色的 alpha 组成。
返回:
-
FREBitmapData
-
与 ActionScript BitmapData 对象关联的 FREBitmapData 对象。
示例:
Byte[] fillColor = {0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf};
FREBitmapData bitmap = FREBitmapData.newBitmapData( 320, 200, true, fillColor );
getWidth
public int getWidth()
返回位图的宽度,以像素为单位。此值对应于 ActionScript BitmapData 类对象的
width
属性。调用此方法前必须先调用此对象的
acquire()
函数。
返回:
-
int
-
位图的跨水平轴的像素的数目。
getHeight
public int getHeight()
位图的高度(以像素为单位)。此值对应于 ActionScript BitmapData 类对象的
height
属性。调用此方法前必须先调用此对象的
acquire()
函数。
返回:
-
int
-
位图的跨垂直轴的像素的数目。
hasAlpha
public boolean hasAlpha()
指示位图是否支持每个像素具有不同的透明度。此值对应于 ActionScript BitmapData 类对象的
transparent
属性。如果值为
true
,则会使用像素颜色值的 alpha 组成。如果值为
false
,则不使用颜色的 alpha 组成。调用此方法前必须先调用此对象的
acquire()
函数。
返回:
-
boolean
-
如果位图使用 alpha 通道,则值为 true。
isPremultiplied
public boolean isPremultiplied()
指示是否将位图像素作为预乘的颜色值进行存储。True 值表示像素颜色的红、绿和蓝组成预乘 alpha 组成。ActionScript BitmapData 对象目前始终进行预乘(但以后会对运行时进行更改,从而可以创建不进行预乘的位图)。有关预乘颜色值的详细信息,请参阅
用于 Adobe Flash Platform 的 ActionScript 3.0 参考
中的 BitmapData.getPixel()。调用此方法前必须先调用此对象的
acquire()
函数。
返回:
-
boolean
-
如果像素颜色组成已经乘以 alpha 组成,则值为
true
。
getLineStride32
public int getLineStride32()
指定位图的每个水平行的数据量。将此值与
getBits()
返回的字节数组结合使用以解析图像。例如,字节数组中紧跟位于位置
n
处的像素的位置为
n + getLineStride32()
。调用此方法前必须先调用此对象的
acquire()
函数。
返回:
-
int
-
图像中每个水平行的数据量。
示例:
以下示例将包含像素颜色的字节数组的位置移至位图中第三行的开始处:
Byte[] fillColor = {0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf};
FREBitmapData bitmap = FREBitmapData.newBitmapData( 320, 200, true, fillColor );
int lineStride = bitmap.getLineStride32();
bitmap.acquire();
ByteBuffer pixels = bitmap.getBits();
pixels.position( lineStride * 3 );
//do something with the image data
bitmap.release();
getBits
ByteBuffer getBits()
返回像素颜色值的数组。在使用此方法前必须首先调用
acquire()
,并在完成数据修改后调用
release()
。若要对像素数据进行更改,请调用
invalidateRect()
以通知 AIR 运行时位图已更改。否则,不会更新显示的图形。
返回:
-
java.nio.ByteBuffer
-
图像数据。
示例:
FREBitmapData bitmap = FREBitmapData.newBitmapData( 320, 200, true, fillColor );
bitmap.acquire();
ByteBuffer pixels = bitmap.getBits();
//do something with the image data
bitmap.release();
acquire
public void acquire()
获取对图像的锁定,以便访问该图像时,运行时不能修改或丢弃这些数据。仅需对从扩展的 ActionScript 端传递到函数的位图获取锁定。
锁定后,仅可访问
getBits()
函数返回的数据。访问或试图修改 FREBitmapData 结果的其他属性将导致异常。
invalidateRect
void invalidateRect( int x, int y, int width, int height )
通知运行时您已更改图像的一个区域。位图数据对象的屏幕显示不会更新,除非您调用此方法。调用此方法前必须先调用此对象的
acquire()
函数。
参数:
-
x
-
无效的矩形的左上角。
-
y
-
无效的矩形的左上角。
-
width
-
无效的矩形的宽度。
-
height
-
无效的矩形的高度。
release
public void release()
释放被
acquire()
获取的锁定。只有在释放锁定后才能访问所有位图属性,除了
getBits()
返回的像素数据。
isInvertedY
public boolean isInvertedY()
指明存储图像数据行的顺序。如果为
true
,则在
getBits()
方法返回的缓存中首先显示图像数据的最后一行。Android 上的图像通常从数据的第一行开始存储,因此在 Android 平台上,此属性通常为
false
。
AIR 3.1 中添加了以下内容。