2,275
社区成员
发帖
与我相关
我的任务
分享
package {
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Mouse;
public class ScrollPic extends Sprite {
private var smain:Sprite;
private var smask:Sprite;
private var container:Sprite;
private var marrow:Sprite;
//BitmapData 对象的最大宽度和高度为 2880 像素
//将原宽20000的图片切割成宽2500的8张分图
public function ScrollPic() {
container=new Sprite();
addChild(container);
var sbg:Sprite=new Sprite();
sbg.graphics.beginFill(0xffffff,0.25);
sbg.graphics.drawRect(-5,-5,410,310);
sbg.graphics.endFill();
smask=new Sprite();
smask.graphics.beginFill(0x000000);
smask.graphics.drawRect(0,0,400,300);
smask.graphics.endFill();
smain=new Sprite();
container.addChild(sbg);
container.addChild(smain);
container.addChild(smask);
smain.mask=smask;
marrow=new Sprite();
marrow.graphics.lineStyle(3,0xffffff);
marrow.graphics.beginFill(0x000000,0.75);
marrow.graphics.moveTo(-15,0);
marrow.graphics.lineTo(-15,8);
marrow.graphics.lineTo(-3,8);
marrow.graphics.lineTo(-3,15);
marrow.graphics.lineTo(15,0);
marrow.graphics.lineTo(-3,-15);
marrow.graphics.lineTo(-3,-8);
marrow.graphics.lineTo(-15,-8);
marrow.graphics.lineTo(-15,0);
marrow.graphics.endFill();
marrow.name="marrow";
container.addChild(marrow);
container.x=40;
container.y=10;
var pics:Array=["qmsht_1.jpg","qmsht_2.jpg","qmsht_3.jpg","qmsht_4.jpg","qmsht_5.jpg","qmsht_6.jpg","qmsht_7.jpg","qmsht_8.jpg"];
for (var i:int=0; i<pics.length; i++) {
var picurl:URLRequest=new URLRequest(pics[i]);
var loader:Loader=new Loader();
loader.load(picurl);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loader_completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loader_ioerrorHandler);
}
container.addEventListener(MouseEvent.ROLL_OVER,container_rollover);
container.addEventListener(MouseEvent.ROLL_OUT,container_rollout);
addEventListener(Event.ENTER_FRAME,enterframe);
}
private function container_rollover(e:MouseEvent):void{
Mouse.hide();
}
private function container_rollout(e:MouseEvent):void{
Mouse.show();
}
private function enterframe(e:Event):void{
if(smask.hitTestPoint(mouseX,mouseY)){
var p:Point=new Point(mouseX,mouseY);
p=smask.globalToLocal(p);
marrow.x=p.x;
marrow.y=p.y;
var p0:Point=smask.globalToLocal(new Point(240,160));
var px:Number=p.x-p0.x;
var py:Number=p.y-p0.y;
marrow.rotation=Math.atan2(py,px)*180/Math.PI;
py=Math.round(py/5);
px=Math.round(px/5);
if(smain.x>=smask.width-smain.width+px && smain.x<=px)smain.x-=px;
if(smain.y>=smask.height-smain.height+py && smain.y<=py)smain.y-=py;
}
}
private function loader_completeHandler(e:Event):void {
var loaderinfo:LoaderInfo=LoaderInfo(e.target);
//根据图片名称调整图片位置
var re:RegExp=/qmsht_(?P<picindex>\d+)\.jpg$/;
if(re.test(loaderinfo.url)){
var picindex:Number=Number(loaderinfo.url.match(re).picindex);
var pic:Loader=loaderinfo.loader;
pic.x=(picindex-1)*2500;
smain.addChildAt(pic,0);
}
}
private function loader_ioerrorHandler(e:IOErrorEvent):void {
var tf:TextField=new TextField();
var tfmt:TextFormat=new TextFormat();
tfmt.color=0x00ffff;
tf.defaultTextFormat=tfmt;
tf.wordWrap=true;
tf.width=stage.stageWidth-20;
tf.multiline=true;
tf.text=e.text;
tf.autoSize="left";
tf.x=10;
addChild(tf);
}
}
}