Another approach might be extending mesh, and using MovieMesh as
inspiration?
On 15 Oct 2009, at 06:40, Alexander wrote:
It's not there (yet), here is a simple usable implementation:
package away3dlite.materials
{
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.geom.Matrix;
import flash.geom.Rectangle;
public class MovieMaterial extends BitmapMaterial
{
public var movie:DisplayObject;
public var movieTransparent:Boolean;
private var userClipRect:Rectangle;
private var transRect:Matrix;
public function MovieMaterial( movieAsset:DisplayObject,
transparent:Boolean=false, rect:Rectangle=null )
{
movieTransparent = transparent;
movie = movieAsset;
initRect(rect);
createBitmap(movie);
drawBitmap();
}
protected function initRect(rect:Rectangle=null):void
{
userClipRect = rect || movie.getBounds(movie);
transRect = new Matrix(1, 0, 0, 1, -userClipRect.x, -
userClipRect.y);
}
protected function createBitmap(asset:DisplayObject):void
{
if(_graphicsBitmapFill.bitmapData)
_graphicsBitmapFill.bitmapData.dispose();
if (userClipRect)
{
_graphicsBitmapFill.bitmapData = new
BitmapData(int
(userClipRect.width+0.5), int(userClipRect.height+0.5),
movieTransparent, 0x000000);
}
else if (asset.width == 0 || asset.height == 0)
{
_graphicsBitmapFill.bitmapData = new
BitmapData(256, 256,
movieTransparent, 0x000000);
}
else
{
_graphicsBitmapFill.bitmapData = new
BitmapData(int(asset.width
+0.5), int(asset.height+0.5), movieTransparent, 0x000000);
}
}
public function drawBitmap():void
{
_graphicsBitmapFill.bitmapData.fillRect
(_graphicsBitmapFill.bitmapData.rect, 0x000000);
_graphicsBitmapFill.bitmapData.draw(movie, transRect,
movie.transform.colorTransform, null);
}
}
}