zazzle,www.zazzle.com 一个在线印品制作的网站,用Ajax做的。虽然慢(因为每个动作都需要服务器来做),但是效果确实不错。
他的那个图片的 贴身效果,服务器端不知道怎么弄的,还是比较强的。
在flash里面 貌似可以实现,但是结果却不尽人意。
如果在 flash 里面实现的话,除了用DisplacementMapFilter恐怕别无她法了。
<?xml version="1.0"?>
<!-- containers\layouts\HDivBoxSimple.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
fontSize="12" layout="absolute" width="850" height="600"
applicationComplete="applicationCompleteHandler()">
<mx:Script>
<![CDATA[
import mx.core.BitmapAsset;
[Embed(source="designall.dll.jpg")]
[Bindable]
private var testClass:Class;
private function creationCompleteHnadler():void {
image.filters = [getFilter(),
];
image.transform.colorTransform = getColorTran();
}
private function getFilter():DisplacementMapFilter {
var channel:uint = 1;
trace(channel);
var mapBitmap:BitmapData = getTestBitmapData();
var mapPoint:Point = new Point(-image.x,-image.y);
var componentX:uint = 2;
var componentY:uint = 4;
var scaleX:Number = ss.value;
var scaleY:Number = ss.value;
var mode:String = DisplacementMapFilterMode.COLOR;
var color:uint = 0;
var alpha:Number = 0.5;
var displacementMapFilter:DisplacementMapFilter = new DisplacementMapFilter(
mapBitmap,
mapPoint,
componentX,
componentY,
scaleX,
scaleY,
mode,
color,
alpha
);
return displacementMapFilter;
}
private function getColorTran():ColorTransform {
var clolor:ColorTransform = new ColorTransform(1,1,1,1,
-10,-10,-10,0);
return clolor;
}
private function getTestBitmapData():BitmapData {
return BitmapAsset(new testClass()).bitmapData.clone();
}
private function applicationCompleteHandler():void {
return;
var bitmap:Bitmap = new Bitmap(getTestBitmapData());
//bitmap.alpha = 0.3;
stage.addChild(bitmap);
}
private function mouseDownHandler():void {
stage.addEventListener(MouseEvent.MOUSE_UP,stageMouseUpHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE,stageMouseMoveHandler);
image.startDrag();
}
private function stageMouseMoveHandler(e:MouseEvent):void {
//creationCompleteHnadler();
}
private function stageMouseUpHandler(e:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP,stageMouseUpHandler);
image.stopDrag();
creationCompleteHnadler();
}
]]>
</mx:Script>
<mx:Canvas>
<mx:Image id="image0" source="@Embed(source='designall.dll.jpg')"/>
<mx:Image id="image" source="@Embed(source='ttt.png')"
mouseDown="mouseDownHandler()"
creationComplete="creationCompleteHnadler()" x="97" y="93" width="206" height="194"/>
</mx:Canvas>
<mx:HSlider id="ss" x="108" y="506"
value="20"
minimum="0" maximum="100" change="creationCompleteHnadler()"/>
</mx:Application>