求 flash 效果原文件
/uploadfile/jiaocheng/20140195/2847/2014012819471440689.jpg
谁有和上图效果一样的 原代码文件 请发我个 谢谢!
[解决办法]
没有这个源码,去百度找一下,类似的应该挺多的吧。
[解决办法]
在www.9ria.com可以找到。或flash8.net
[解决办法]
package
{
import flash.display.Sprite;
import flash.display.StageQuality;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import gs.TweenMax;
/**
* ...
* @author pz
*/
[SWF(width='900',height='600',frameRate='30',backgroundColor='#000000')]
public class Main extends Sprite
{
private var container:Sprite;
private var album_xml:XML;
private var req:URLRequest;
private var loader:URLLoader;
private var lists:Array;
private var planeArray:Array;
private var planeX:int = 200;
private var planeZ:int = 200;
private var planeRotationY:uint = 50;
private var time:int = 1;
private var median:uint;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
container = new Sprite();
addChild(container);
container.x = stage.stageWidth / 2;
container.y = stage.stageHeight / 2;
reqXML();
}
private function reqXML():void
{
req = new URLRequest("album.xml");
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete);
try
{
loader.load(req);
}
catch (error:Error)
{
trace("Unable to load URL: " + error);
}
}
private function onComplete(e:Event):void
{
loader.removeEventListener(Event.COMPLETE, onComplete);
album_xml = new XML(e.target.data);
lists = new Array();
for each (var k:XML in album_xml.photo)
{
lists.push(k.@url);
}
addAlbum();
}
private function addAlbum():void
{
planeArray = new Array();
for (var i:int = 0; i < lists.length; i++)
{
var plane:LoadPhoto = new LoadPhoto(lists[i]);
container.addChildAt(plane,0);
plane.id = i;
planeArray.push(plane);
plane.addEventListener(MouseEvent.CLICK, onClick);
}
if (lists.length % 2 == 0)
{
median = lists.length / 2;
}
else
{
median=(lists.length+1)/2
}
shiftToItem(median)
}
private function shiftToItem(id:int):void
{
stage.quality = StageQuality.BEST
for (var i:int = 0; i < planeArray.length; i++)
{
var plane:LoadPhoto = planeArray[i] as LoadPhoto;
if (i == id)
{
TweenMax.to(plane, time, { x:0, z:0,rotationY:0 } );
}
else if (i < id)
{
TweenMax.to(plane, time, { x: -planeX * (id - i), z:(id - i) * planeZ , rotationY: -planeRotationY } );
container.setChildIndex(plane, i);
}
else
{
TweenMax.to(plane, time, { x:planeX * (i - id), z:(i -id) * planeZ , rotationY:planeRotationY } );
container.setChildIndex(plane, 0);
}
}
}
private function onClick(e:MouseEvent):void
{
var plane:LoadPhoto = e.currentTarget as LoadPhoto;
var index:int = plane.id ;
shiftToItem(index);
}
}
}
package
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.events.Event;
/**
* ...加载外部图片类
* @author pz
*/
public class LoadPhoto extends Sprite
{
private var loader:Loader
private var url:String;
public var id:int;
public function LoadPhoto(url:String)
{
this.url = url;
init();
}
private function init():void
{
loader = new Loader();
loader.load(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE , onComplete);
}
private function onComplete(e:Event):void
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete);
var img:Bitmap = e.target.content as Bitmap;
var ref:Reflection = new Reflection(img,2,img.height*0.6);
addChild(ref);
ref.x = -ref.width / 2;
ref.y = -150;
}
}
}
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.GradientType;
import flash.geom.Matrix;
import flash.display.SpreadMethod
import flash.display.BlendMode
/**
* 倒影类
* @author pz
*/
public class Reflection extends Sprite
{
private var img:Bitmap;
private var distance:Number;
private var offset:Number;
private var refImgData:BitmapData
private var refImg:Bitmap;
private var container:Sprite;
private var refLight:Sprite;
public function Reflection(img:Bitmap,distance:Number,offset:Number=100)
{
this.img = img;
this.distance = distance;
this.offset = offset;
addChild(img);
initReflection();
}
private function initReflection():void
{
var imgData:BitmapData = img.bitmapData;
refImgData = imgData.clone();
refImg = new Bitmap(refImgData);
container = new Sprite();
refImg.scaleY *= -1;
refImg.y = img.y + (img.height*2) + distance;
container.addChild(refImg);
container.blendMode = BlendMode.LAYER;
refLight = new Sprite();
var fillType:String = GradientType.LINEAR;
var colors:Array = [0x000000, 0xFFFFFF];
var alphas:Array = [1, 0];
var ratios:Array = [0, 0xFF];
var matr:Matrix = new Matrix();
matr.createGradientBox(img.width,img.height , Math.PI / 2, 0, offset+distance);
var spreadMethod:String = SpreadMethod.PAD;
refLight.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);
refLight.graphics.drawRect(0, img.y+img.height+distance, img.width, img.height);
refLight.graphics.endFill();
refLight.blendMode = BlendMode.ALPHA;
container.addChild(refLight);
addChild(container);
}
}
}