代码: |
package ActionScript{//包是什么,我的理解它就是文件夹,不就是为了完全限定名称吗 import flash.net.URLRequest; import flash.display.Loader; import flash.events.*; import flash.display.MovieClip; import flash.text.TextField; import fl.transitions.Tween; import fl.transitions.easing.Back; import fl.transitions.TweenEvent; //变了啊,真的变了,现在用什么东西都得冲人家张口借,尽管是免费的,我曾经偷//偷地在所关联的MC里放了一个文本框,结果还是被发现了,你说我和FLASH打//了多少年的交道,多多少少有点感情吧??,最后我不得不import flash.text.TextField; public class loadPic_mc extends MovieClip { //类名原来就是脚本文件名 public var fun:Function; //定义了一个属性他的再次出现在最后一行 private var per_txt:TextField; //显示加载进度 private var loadPic:Loader; private var dispatcher:IEventDispatcher; //上面的这些变量曾经我是声明在主时间轴的最顶端的 public function loadPic_mc(str:String):void {//构造函数,现在完全多了个这个东东,据我观察,当你声明一个类时,不管你愿不愿意它都会执行这个函数 var request:URLRequest=new URLRequest(str); loadPic=new Loader(); dispatcher=loadPic.contentLoaderInfo; dispatcher.addEventListener(Event.COMPLETE,loadComH); dispatcher.addEventListener(Event.OPEN,loadOpenH); dispatcher.addEventListener(ProgressEvent.PROGRESS,loadProgH); //订阅事件呢 loadPic.load(request); //一个载入多写了几行,要是从3.0转型到2.0那该多快 per_txt=new TextField(); per_txt.x=10; per_txt.y=55; per_txt.width=150; per_txt.textColor=0xB3CCCC; this.motionLoad_mc.visible=false; //在loadPic_mc的舞台上所含的一个MC,有时间轴的 this.addChild(loadPic); //曾经用this指东指西的,现在呢,不能再乱指了,只能指本类, this.addChild(per_txt); } private function loadOpenH(event:Event):void { this.motionLoad_mc.visible=true; per_txt.text="正在载入。。。。"; loadPic.alpha=0; //开始下载时调度 } private function loadProgH(event:ProgressEvent):void { per_txt.text="已载入。。。。"+uint(event.bytesLoaded/event.bytesTotal*100)+"%"; //下载过程中调度 } private function loadComH(event:Event):void { var aTween:Tween = new Tween( loadPic, "alpha", Back.easeOut,0, 1, 2, true); aTween.addEventListener(TweenEvent.MOTION_FINISH,disPic); //其实完全没必要订阅这个事件,只是想联系一下Tween类 this.removeChild(this.motionLoad_mc); this.removeChild(per_txt); //显示对象很帅吧以后就再也不要_mc[newmc+”I”]去找对象了 dispatcher.removeEventListener(Event.COMPLETE,loadComH); dispatcher.removeEventListener(Event.OPEN,loadOpenH); dispatcher.removeEventListener(ProgressEvent.PROGRESS,loadProgH); //清除监听,便于处理垃圾 } private function disPic(event:TweenEvent){ fun(); //调用函数fun } } } //写完此类了 其实3.0语言一看很有层次感的,8错8错 下面在库里找到loadPic_mc 右键 –链接 类里填入:ActionScript.loadPic_mc 注: loadPic_mc里只含一个元件motionLoad_mc |
代码: |
package ActionScript{ import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.*; import flash.display.SimpleButton; import flash.display.Sprite; import fl.transitions.Tween; import fl.transitions.easing.Back; import ActionScript.loadPic_mc; public class rejigger_mc extends Sprite { private var sprite:Sprite; private var portraitXml:XML; private var loadXml:URLLoader; private var dispatcher:IEventDispatcher; private var i:uint; private var len:uint; private var m:uint; //这些属性都是私有的从此类外部是无法访问的 public function rejigger_mc():void { var request:URLRequest=new URLRequest("portrait.xml"); loadXml=new URLLoader(request); //载入外部XML文件 loadXml.addEventListener(Event.COMPLETE,comH); } private function comH(event:Event) { portraitXml=new XML(event.target.data); sprite=new Sprite(); //这个其实就是装loadPic_mc的容器 sprite.x=10; sprite.y=10; this.addChild(sprite); var maskSprite:Sprite=new Sprite(); //只是为了遮盖 所以不必添加到显示列表中 maskSprite.graphics.beginFill(0xffffff); maskSprite.graphics.drawRect(10,10,150,80); maskSprite.graphics.endFill(); sprite.mask=maskSprite; this.right_btn.addEventListener(MouseEvent.CLICK,moveRight); this.left_btn.addEventListener(MouseEvent.CLICK,moveLeft); //又该订阅事件了 i=0; len=0; for (var item:String in portraitXml.part) { len++; //不知道怎么取得XML子节点的长度,要是转换为XML文档类的话觉得很麻烦 } loadPor(); loadXml.removeEventListener(Event.COMPLETE,comH); //卸载监听 } private function loadPor():void { if (i<len) { var loadPic:loadPic_mc=new loadPic_mc(portraitXml.part{i}.@path);//基于发布系统的问题,此处的大括号需要换为中括号. loadPic.fun=loadPor; sprite.addChild(loadPic); //在sprite里添加显示对象loadPic loadPic.x=i*150; i++; } else { return; } } private function moveRight(event:MouseEvent) { if (m>0) { m--; var aTween:Tween = new Tween( sprite, "x", Back.easeOut, sprite.x, 10-m*150, 1, true); //移动是直接移动sprite,因为sprite里含N多个loadPic } else { return; } } private function moveLeft(event:MouseEvent) { if (m<len-1) { m++; var aTween:Tween = new Tween( sprite, "x", Back.easeOut, sprite.x, 10-m*150, 1, true); } else { return; } } } } |
代码: |
this.stage.frameRate=31; this.stage.scaleMode=StageScaleMode.NO_SCALE; this.stage.align=StageAlign.TOP_LEFT; import ActionScript.rejigger_mc; var myrejigger:rejigger_mc=new rejigger_mc(); addChild(myrejigger); |
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |