[ActionScript 3.0] 如何控制加载swf动画的播放与暂停

此方法适用于用as 1.0或者as2.0以及as3.0编译的swf,因为as1.0和as2.0编译的swf是AVM1Movie类型,因此需要通过类ForcibleLoader.as将其转换为version 9以上的swf,注意,如果加载的swf是3.0代码编译的,且此swf用文档类编译,则文档类必须继承MovieClip,接下来看代码:

首先写一个加载swf的类SwfPlayer.as:

  1 package com.views
  2 {
  3     import com.controls.utils.ForcibleLoader;
  4     
  5     import flash.display.AVM1Movie;
  6     import flash.display.Loader;
  7     import flash.display.MovieClip;
  8     import flash.display.Shape;
  9     import flash.events.Event;
 10     import flash.net.URLRequest;
 11 
 12     /**
 13      * ...
 14      * @author Frost.Yen
 15      */
 16     public class SwfPlayer extends MovieClip 
 17     {
 18         private var _loader:Loader;;
 19         private var _urlR:URLRequest;
 20         private var _url:String;
 21         private var _container:MovieClip;
 22         private var _mask:Shape;
 23         private var _forcibleLoader:ForcibleLoader;
 24         private var _stageW:Number;//swf实际的舞台宽度
 25         private var _stageH:Number;//swf实际的舞台高度
 26         public function SwfPlayer() 
 27         {
 28             _mask = new Shape();
 29             _mask.graphics.beginFill(0);
 30             _mask.graphics.drawRect(0, 0, 10, 10);
 31             _mask.graphics.endFill();
 32             this.mask = _mask;
 33         }
 34         /**
 35          * 加载swf
 36          * @param    url swf路径
 37          */
 38         public function Load(url:String):void{
 39             this._url=url;
 40             if(!_loader){
 41                 _loader= new Loader()
 42             }
 43             _urlR=new URLRequest(_url);
 44             _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
 45             _loader.load(_urlR);
 46         }
 47         
 48         private function onComplete(event:Event):void {
 49             
 50             if (_loader.content is AVM1Movie) {//如果是as2.0或者1.0代码生成的swf
 51                 trace("_loader.content is AVM1Movie");
 52                 _loader.unloadAndStop();
 53                 _forcibleLoader = new ForcibleLoader(_loader);
 54                 _forcibleLoader.load(_urlR);
 55                 return;
 56             }
 57             _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onComplete);
 58             trace(_loader.contentLoaderInfo,_loader,"_loader");
 59             try
 60             {
 61                 _container = MovieClip(_loader.content);
 62                 _stageW = _loader.contentLoaderInfo.width;
 63                 _stageH = _loader.contentLoaderInfo.height;
 64                 this.addChild(_container);
 65             } 
 66             catch(error:Error) 
 67             {
 68                 trace(_loader.width,"_loader.width");
 69                 
 70                 _stageW = _loader.width;
 71                 _stageH = _loader.height;
 72                 this.addChild(_loader);
 73             }
 74             
 75             _mask.width = _stageW;
 76             _mask.height = _stageH;
 77             
 78             this.addChild(_mask);
 79             this.dispatchEvent(new Event(Event.COMPLETE));
 80         }
 81         /**
 82          * 播放下一帧
 83          */
 84         public function nextPlay():void{
 85             if(_container.currentFrame==_container.totalFrames){
 86                 stop();
 87             }else{
 89                 _container.nextFrame();
 90             }
 91         }
 92         /**
 93          * 播放上一帧
 94          */      
 95         public function prevPlay():void{
 96             if(_container.currentFrame==1){
 97                 stop();
 98             }else{
100                 _container.prevFrame();
101             }
102         }
103         /**
104          * 开始播放
105          */
106         public function startPlay():void
107         {
108             _container.play();
109         }
110         /**
111          * 暂停播放
112          */
113         public function pausePlay():void
114         {
115             _container.stop();
116         }
117         
118         /**
119          * 卸载加载的swf
120          */
121         public function unloadAndStop():void
122         {
123             
124             if(_loader){
125                 _loader.unloadAndStop();
126                 _loader = null;
127                 
128             }
129             if(_container){
130                 _container.parent.removeChild(_container);
131                 _container = null;
132             }
133             
134         }
135         
136         public function get stageW():Number 
137         {
138             return _stageW;
139         }
140         
141         public function set stageW(value:Number):void 
142         {
143             _stageW = value;
144         }
145         
146         public function get stageH():Number 
147         {
148             return _stageH;
149         }
150         
151         public function set stageH(value:Number):void 
152         {
153             _stageH = value;
154         }
155         
156     }
157 
158 }

 

然后在flash文档类Main.as中调用,flash文档舞台上有两个控制按钮stopBtn,playBtn:

 1 package  
 2 {
 3     import com.views.SwfPlayer;
 4     import flash.display.Sprite;
 5     import flash.events.MouseEvent;
 6     /**
 7      * ...
 8      * @author Frost.Yen
 9      */
10     public class Main extends Sprite 
11     {
12         private var _swfPlayer:SwfPlayer;
13         public function Main() 
14         {
15             _swfPlayer = new SwfPlayer();
16             this.addChild(_swfPlayer);
17             _swfPlayer.load("D:/Flash学习/flash动画作品/1/1.swf");
18             stopBtn.addEventListener(MouseEvent.CLICK,onStop);
19             playBtn.addEventListener(MouseEvent.CLICK,onPlay);
20         }
21         private function onStop(e:MouseEvent):void 
22         {
23             _swfPlayer.pausePlay();//暂停播放
24         }
25         private function onPlay(e:MouseEvent):void 
26         {
27             _swfPlayer.startPlay();//开始播放
28         }
29     }
30 }

附:此类ForcibleLoader.as可到http://download.csdn.net/detail/yan_frost/4771007下载

转载于:https://www.cnblogs.com/frost-yen/p/4315632.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ActionScript 3.0 是一种基于Adobe Flash 平台的编程语言,常用于游戏开发。它具有强大的功能和丰富的库,可实现各种游戏特效和交互方式。以下是关于使用ActionScript 3.0 开发游戏的一些重要信息。 首先,ActionScript 3.0 具有面向对象编程的特性,如封装、继承和多态,这使得游戏开发更加灵活和可扩展。你可以创建各种类型的游戏对象,并根据需要设定它们的属性和行为。 其次,ActionScript 3.0 提供了丰富的图形和动画处理功能。你可以使用内置的绘图库来创建游戏场景、角色和特效,也可以通过使用动画库来制作复杂的动画序列。此外,还可以利用位图和矢量图形进行图像处理和渲染。 除了图形和动画ActionScript 3.0 还提供了音频和视频处理能力。你可以使用内置的音频库来播放背景音乐和音效,还可以通过外部库或平台来处理视频和流媒体。 另外,ActionScript 3.0 支持网络功能,如Socket 和HTTP 连接等。这意味着你可以开发在线多人游戏,与其他玩家进行实时对战或合作。 此外,Adobe Flash 还提供了一套全面的开发工具和环境,如Adobe Animate 和Flash Builder。这些工具提供了可视化的界面设计、调试和测试的功能,可以帮助开发者更高效地创建和调整游戏。 总而言之,ActionScript 3.0 是一种强大的游戏开发语言,具有丰富的功能和工具。使用它,开发者可以创建出各种类型的游戏,并实现复杂的图形、动画、音频和网络交互效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值