Flash 与课件制作:加载图片

今天下午写了一下这个简单的东西,加载图片。今晚我们玩一下课件的制作,flash 制作课件是一个很实用的东西,能够制造很多动态的效果。当然要制作这些东西花费时间也不少。今晚我们只是利用绘图APi 以及loader 这两个类进行对本地的图片进行加载。但是我们加载的时候 显示的进度会有一些特别,采用扇形填充的方式来填充。有关扇形的东西可以观看之前写的一篇扇形的话题。

加载图片我们使用loader 这个类就可以了,为了让其看起来更加好看,我们可以对图片进行加工,也就是说对图片底部进行一个阴影制作。我们借用滤镜就可以使用到了。非常方便。同时,这个制作当中,我们使用了一个进度显示。也是一个比较有趣的进度显示,采用扇形填充的方式对其图片进行变化。当加载完毕的时候,对图片进行偏移一个位置,这样我们的进度条显示就能够居中。

package { // 写于2010年6月2日,图片加载的进度显示 // 夏天的树人 import flash.display.Sprite; import flash.display.Loader; import flash.display.Shape; import flash.display.LoaderInfo; import flash.display.Bitmap; import flash.net.*; import flash.system.ApplicationDomain; import flash.events.*; import flash.filters.DropShadowFilter; import flash.text.*; public class PhotoLoader extends Sprite { //定义事件 public static const COMPLETE:String=Event.COMPLETE; public static const PROGRESS:String=ProgressEvent.PROGRESS; public static const IO_ERROR:String=IOErrorEvent.IO_ERROR; public static const INIT:String=Event.INIT; private var filter:DropShadowFilter; private var contents:*; private var isActive:Boolean=false; private var pen:Shape=new Shape(); private var bottom:Shape=new Shape(); private var contain:Sprite=new Sprite(); private var loadinfo:TextField=new TextField(); public function PhotoLoader() { init(); } //初始化阴影滤镜 private function init():void { filter=new DropShadowFilter(); filter.strength=0.3; addChild(bottom); addChild(pen); bottom.graphics.lineStyle(1); bottom.graphics.beginFill(0xffffff); bottom.graphics.drawCircle(0,0,30); bottom.graphics.endFill(); bottom.filters=[filter]; addChild(contain); addChild(loadinfo); } //加载图片 public function load(path:String,isActive:Boolean=true):void { var loader:Loader=new Loader(); //addChild(loader); this.isActive=isActive; loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); loader.contentLoaderInfo.addEventListener(Event.INIT,onInit); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onErrorHandler); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); loader.load(new URLRequest(path)); } private function onInit(event:Event):void { this.content=event.currentTarget.content; this.dispatchEvent(new Event(PhotoLoader.INIT)); } public function get content():* { return contents; } public function set content(contents:*):void { this.contents=contents; } private function onComplete(event:Event):void { event.currentTarget.addEventListener(Event.COMPLETE,onComplete); event.currentTarget.removeEventListener(ProgressEvent.PROGRESS,onProgress); var bitmap:*=event.currentTarget.content; this.content=bitmap; contain.addChild(bitmap); bitmap.x=this.width*=-0.5; bitmap.y=this.height*=-0.5; loadinfo.text=""; this.removeChild(loadinfo); this.dispatchEvent(new Event(PhotoLoader.COMPLETE)); pen.graphics.clear(); if (isActive) { drawBase(bitmap.width,bitmap.height); } } private function onProgress(event:ProgressEvent):void { loadinfo.text=Math.floor(event.bytesLoaded/event.bytesTotal*100).toString()+"/%"; drawProgressBar(event.bytesLoaded/event.bytesTotal*360); this.dispatchEvent(new Event(PhotoLoader.PROGRESS)); } private function onErrorHandler(event:IOErrorEvent):void { this.dispatchEvent(new Event(PhotoLoader.IO_ERROR)); } //绘制图片底部 private function drawBase(w:Number,h:Number):void { var shape:Shape=new Shape(); contain.addChildAt(shape,0); shape.graphics.lineStyle(0,0,0); shape.graphics.beginFill(0xffffff); shape.graphics.drawRect(this.content.x-w/20,this.content.y-h/20,w+w/10,h+h/10); shape.graphics.endFill(); shape.filters=[filter]; } //进度显示,用于进度条显示 private function drawProgressBar(startAngle:Number):void { pen.graphics.clear(); pen.graphics.lineStyle(1); pen.graphics.beginFill(0x8000FF); pen.graphics.moveTo(0,0); for (var i:int=0; i<startAngle; i++) { var px:Number=30*Math.cos(-i*Math.PI/180); var py:Number=30*Math.sin(-i*Math.PI/180); pen.graphics.lineTo(px,py); } pen.graphics.lineTo(0,0); pen.graphics.endFill(); } } }

初步使用,然后对图片进行分布。这个分布也是我们常用一种技巧。

分布学当中一种很常用应用。矩阵分布方式。

package { import flash.display.MovieClip; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Bitmap; import flash.net.*; import flash.system.ApplicationDomain; import flash.events.*; public class Main extends MovieClip { private var loader:PhotoLoader; public function Main() { init(); } //循环加载12张图片 private function init():void { for (var i:int=1; i<=12; i++) { loader=new PhotoLoader(); addChild(loader); if (i<=3) { loader.x=(i)*140+(i)*20; loader.y=100; } else if(i>3 && i<=6) { loader.x=(i-3)*140+(i-3)*20; loader.y=220; } else if(i>6 && i<=9) { loader.x=(i-6)*140+(i-6)*20; loader.y=340; } else { loader.x=(i-9)*140+(i-9)*20; loader.y=460; } loader.addEventListener(PhotoLoader.COMPLETE,imageLoadComplete); loader.addEventListener(PhotoLoader.PROGRESS,onProgress); loader.addEventListener(PhotoLoader.IO_ERROR,onErrorHandler); loader.load("image/"+i+".jpg"); } } private function imageLoadComplete(event:Event):void { } private function onProgress(event:Event):void { } private function onErrorHandler(event:Event):void { } } }

扩展:扇形的知识,同时可以对图片增加交互的实验。对鼠标进行交互

好了,写到这里。累了。

Flash 与课件制作:加载图片相关推荐

  1. 每天学一点flash (20) flash cs3.0 外部加载图片

    今天开始看了一些外部加载图片的,因为as3.0 外部加载已经没有没有了loadMovie类,所以as3.0要转变思想了.可是迷惘的事情特别多,之前看了一些关于容器的那些东西,看不懂.也许我还没有入门吧 ...

  2. Flash相册加载图片完毕等比缩放的类

    每次做相册类的flash的时候,图片加载完毕之后都要写等比缩放的函数来处理加载图片. 今天又遇到了,也不知道哪根筋不对了,弄了十几分钟老是算法有错误.好好的一个美女图片被搞的惨不忍睹.所以写了这个类 ...

  3. Flash+XML 加载图片

    主场景MC代码: function parseXML() {var _loc11 = _xml.firstChild;//图片总数var _loc12 = _loc11.childNodes.leng ...

  4. Delphi FastReport动态加载图片

    Delphi  FastReport动态加载图片 2011-01-06         作者:李海彬 阅读:684 以前用FastReport制作报表,从来没有打印过图片,这段时间做了个打印个人简历的 ...

  5. php预加载图片,图片预加载的一个简明例子

    图片预加载技术的典型应用:如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展示 ...

  6. Android中使用ImageLoader加载图片

    Android上让人头疼的莫过于从网络上获取图片,然后显示图片,最后还要考虑到图片的回收问题,这之间只要有任何一个环节有问题都可能直接OOM.尤其在需要展示图片的列表页面,会加载大量网络上的图片,每当 ...

  7. 小学计算机动画制作,小学flash动画课件制作方法

    小学flash动画课件制作方法 flash动画可以制作多种多样的课件,而且简单又方便,下面是小编为大家推荐小学flash动画课件的内容,希望能够帮助到你,欢迎大家的阅读参考. 方法/步骤 1 上网搜索 ...

  8. cocos微信小游戏开发-http请求-使用微信云函数-toast-loading-动态加载图片-添加触摸事件-微信分享-label点击事件-背景音乐音效-程序活动状态判断-性能优化

    cocos开发微信小游戏相关-<益智推箱> 扫码查看功能,有需要可直接提问 Cocos Creator 3.4 用户手册 cocos creator基本操作 微信开发文档|云函数 1. h ...

  9. 游戏UI动态加载图片优化

    说到UI优化,很多人对其并不以为意,UI的制作无非使用UGUI或者NGUI.UI优化主要是针对图集,还有一些依赖项的优化,针对的是内存优化,上面这些都是关于静态UI的优化,这个是作为程序员都要经历的阶 ...

最新文章

  1. 极速理解设计模式系列:11.单例模式(Singleton Pattern)
  2. 谷歌的硬件梦:Pixel手机、ChromeOS平板和Home音箱
  3. mysql数据库唯一性_mysql表的字段怎么设置唯一性
  4. 1.7 总结-深度学习-Stanford吴恩达教授
  5. 2019年python就业前景_2019年Python数据挖掘就业前景前瞻
  6. 【Linux】一步一步学Linux——setfacl命令(117)
  7. java责任链设计模式_Java中的责任链设计模式
  8. 360手机助手游戏怎么实名认证 360手机助手下载的游戏怎么关了悬浮窗
  9. 菜鸟涂鸦作品展_No.1
  10. android 链式结构,Android 架构师之路10 设计模式之责任链模式
  11. linux中使用网易云音乐
  12. jsp连接mysql 菜鸟_在JSP中访问数据库大全
  13. 电信校园网宽带创翼破解,路由器PPPOE拦截法
  14. 考研计算机300分什么水平,工科类考研300分什么概念?算不算高?
  15. gentoo问题汇总
  16. 量化投资学习必读书目(八)——《短线交易大师》
  17. 智能门铃app开发的功能有哪些
  18. 解决win10笔记本睡眠一段时间后无法唤醒、自动关机的问题
  19. 魔兽世界盒子怎么修改服务器地址,多玩魔盒怎么设置界面 多玩魔兽盒子多玩界面调整教程...
  20. win7计算机无用系统文件夹,c盘怎么清理到最干净(win7如何删除c盘无用文件)...

热门文章

  1. (6)继承与面向对象设计- Effective C++改善程序与设计的55个具体做法(Effective C++: 55 Specific Ways to Improve Your Programs)
  2. 未来计算机发展趋势作文,未来的计算机作文300字(精选3篇)
  3. 十三、SpringBoot与分布式
  4. 文献阅读:Learning Aggregated Transmission Propagation Networks for Haze Removal and Beyond
  5. Tensorflow2.0 VGG实现图片分类
  6. 华为数通笔记-Smart Link和Monitor Link
  7. 「智能化改造项目」配电室智能环境监测系统
  8. oracle 优化器之执行计划
  9. uniApp 微信小程序 授权 公众号推送信息
  10. 小学计算机课知识点,小学信息技术课程课件