AS项目自载Loading

本文介绍了一个Flash项目的加载器实现方式,通过在编译入口类上使用[Frame]注解并指定加载器类来实现。加载器类负责显示加载进度,并在加载完成后跳转到第二帧并展示主内容。

在编译入口类的顶上加一行

[Frame(factoryClass="Loading")]

Loading为类名,这样相当于插入了一帧

看个示例:

loading类:

package
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.utils.getDefinitionByName;
	/**
	 * 加载类,由于原内容会放到此类的第二帧~所以需要使用MovieClip;
	 * @author L4cd.Net
	 */
	public class Preloader extends MovieClip
	{
		[Embed(source="l4cd_48_48.jpg")]
		private var LogoClass:Class;
		private var text:TextField;
		public function Preloader()
		{
			//不多说了
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.showDefaultContextMenu = false;
			//显示一张图片..非必要
			with(addChild(new LogoClass()))
			{
				x=(500-48)/2;
				y=(380-48)/2;
			}
			//加一个textField显示进度
			text = addChild(new TextField()) as TextField;
			with(text)
			{
				defaultTextFormat = new TextFormat("宋体",12,0,null,null,null,null,null,"center");
				mouseEnabled = false;
				height = 16;
				x = (500-100)/2;
				y = 35+(380-15)/2;
			}
			//重要~侦听~
			loaderInfo.addEventListener(ProgressEvent.PROGRESS,progress);
			loaderInfo.addEventListener(Event.COMPLETE,complete);
		}
		//显示进度
		private function progress(e:ProgressEvent):void
		{
			text.text = (e.bytesLoaded/e.bytesTotal*100).toFixed(2)+"% Loaded";
		}
		private function complete(e:Event):void
		{
			//重要..加载完后...我们跳转到第二帧
			gotoAndStop(2);
			//获取文档类...然后显示,对于此步操作..有多种方法..有人习惯直接把原文档类addChild到此类当中..
			var mainClass:Class = Class(getDefinitionByName("AsProjectLoadingExample"));
			stage.addChild(new mainClass() as DisplayObject);
			//删除此类
			destroy();
		}
		private function destroy():void
		{
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress);
			loaderInfo.removeEventListener(Event.COMPLETE,complete);
			parent.removeChild(this);
		}
	}
}
编译入口类:
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.geom.Matrix;

	[SWF(width="500",height="380",backgroundColor="#FFFFFF",frameRate="24")]
	//注意此行,Preloader为类名
	[Frame(factoryClass="Preloader")]
	public class AsProjectLoadingExample extends Sprite
	{
		[Embed(source="CD**.png")]
		private var ImageClass:Class;
		//嵌入一个2M的文件以显示加载效果
		[Embed(source="something.wma",mimeType="application/octet-stream")]
		private var SomeClass:Class;
		public function AsProjectLoadingExample()
		{
			//马赛格ing...
			var bmp:Bitmap = new ImageClass();
			var bit:BitmapData = new BitmapData(bmp.width/10,bmp.height/10,true,0);
			bit.draw(bmp,new Matrix(.1,0,0,.1));
			with (addChild(new Bitmap(bit)))
			{
				scaleX = scaleY = 10;
			}
		}
	}
}
参考链接:http://blog.l4cd.net/post-old-140.html
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值