- 浏览: 97792 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chensong215:
无法获取到ProgressEvent中的bytesTotal
自定义DownloadProgressBar -
qq2464785999:
非常感谢。
测试后,发现要用相对路径的话,好像要这么写
va ...
Flex写XML文件
破阵子_如是我闻
如是我闻。一时佛在舍卫国,祗树给孤独园...
Flex中多线程的实现
最近在网上看到一个工具类可以提供flex中多线程的支持,AsyncThreading,googleCode地址 (【AsyncThreading_2[1].1.zip】下载地址),详细文档可以去googleCode上看
下面总结一下利用这个工具类来实现一个抽奖机的demo。
首先我们要编写一个自定义线程类,继承自AbstractAsyncThread并且实现IAsyncThreadResponder接口,
AbstractAsyncThread这个类可以控制线程的级别:
public const RUN_LEVEL_REAL_TIME:int = 1;
public const RUN_LEVEL_HIGH:int = 3;
public const RUN_LEVEL_ABOVE_NORMAL:int = 6:
public const RUN_LEVEL_NORMAL:int = 8;
public const RUN_LEVEL_BELOW_NORMAL:int = 12:
public const RUN_LEVEL_LOW:int = 24;
IAsyncThreadResponder这个接口提供了一个线程启动后调用的方法
function execute():void;
自定义线程对象类代码如下:
package threads
{
import cn.ningyu.utils.Random;
import com.symantec.premiumServices.asyncThreading.abstract.AbstractAsyncThread;
import com.symantec.premiumServices.asyncThreading.interfaces.IAsyncThreadResponder;
import mx.controls.Label;
public class WorkBee extends AbstractAsyncThread implements IAsyncThreadResponder
{
private var _lab:Label;
public function WorkBee(lab:Label)
{
_lab = lab;
super();
super.priority = super.RUN_LEVEL_REAL_TIME;
}
public function execute():void
{
var random:Random = Random.getInstance();
random.digit = 1;
random.radix = Random.NUMBER;
_lab.text = random.createRandom();
}
}
}
application中代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import threads.WorkBee;
import com.symantec.premiumServices.asyncThreading.AsyncThreadingManager;
import mx.collections.ArrayCollection;
private var threadList:ArrayCollection = new ArrayCollection();
private function init():void {
threadList = new ArrayCollection();
for(var i:int=0;i<7;i++) {
var workBee:WorkBee;
switch(i) {
case 0:
workBee = new WorkBee(lab1);
break;
case 1:
workBee = new WorkBee(lab2);
break;
case 2:
workBee = new WorkBee(lab3);
break;
case 3:
workBee = new WorkBee(lab4);
break;
case 4:
workBee = new WorkBee(lab5);
break;
case 5:
workBee = new WorkBee(lab6);
break;
case 6:
workBee = new WorkBee(lab7);
workBee.wake()
break;
}
threadList.addItem(workBee);
}
}
private function onClick():void {
if(btn.label == "开始抽奖") {
for(var i:int=0;i<7;i++) {
if(threadList[i].sleeping) {
threadList[i].wake();
} else {
threadList[i].start();
}
}
btn.label = "停止抽奖";
} else if(btn.label == "停止抽奖") {
for(var i:int=0;i<7;i++) {
threadList[i].sleep();
}
btn.label = "开始抽奖";
}
}
]]>
</mx:Script>
<mx:FormItem verticalCenter="0" horizontalCenter="0" direction="horizontal" fontSize="50" fontWeight="bold">
<mx:Label id="lab1"/>
<mx:Label id="lab2"/>
<mx:Label id="lab3"/>
<mx:Label id="lab4"/>
<mx:Label id="lab5"/>
<mx:Label id="lab6"/>
<mx:Label id="lab7"/>
<mx:Button id="btn" label="开始抽奖" click="onClick()"/>
</mx:FormItem>
</mx:Application>
注意的点:
线程方法:start()启动线程
sleep()休眠线程
sleeping线程是否处在休眠状态
wake()重新激活线程
kill()杀掉线程
async-threading
还提供AsyncThreadingManager来管理所有的进程
提供的方法:
shutDown()停掉所有的线程
killAllThreads()杀掉所有的线程
还支持线程之间通信,利用sendMessageToThreads(name:String,body:Object):Boolean
将其中的代码移植到 Flex4的项目中 在创建线程的时候 报错
TypeError: Error #1009: Cannot access a property or method of a null object reference.
解决办法:
下载 AsyncThreading_2.1 源码到本地,修改 com.symantec.premiumServices.asyncThreading.handlers.FPSObserverHandler 中的代码 如下:
import mx.core.Application;
修改为:
import spark.components.Application;
private var _appRef:Application = Application.applicationas Application;
修改为:
private var _appRef:Application = FlexGlobals.topLevelApplication as Application;
OK 完成 错误解决!
如是我闻。一时佛在舍卫国,祗树给孤独园...
Flex中多线程的实现
最近在网上看到一个工具类可以提供flex中多线程的支持,AsyncThreading,googleCode地址 (【AsyncThreading_2[1].1.zip】下载地址),详细文档可以去googleCode上看
下面总结一下利用这个工具类来实现一个抽奖机的demo。
首先我们要编写一个自定义线程类,继承自AbstractAsyncThread并且实现IAsyncThreadResponder接口,
AbstractAsyncThread这个类可以控制线程的级别:
public const RUN_LEVEL_REAL_TIME:int = 1;
public const RUN_LEVEL_HIGH:int = 3;
public const RUN_LEVEL_ABOVE_NORMAL:int = 6:
public const RUN_LEVEL_NORMAL:int = 8;
public const RUN_LEVEL_BELOW_NORMAL:int = 12:
public const RUN_LEVEL_LOW:int = 24;
IAsyncThreadResponder这个接口提供了一个线程启动后调用的方法
function execute():void;
自定义线程对象类代码如下:
package threads
{
import cn.ningyu.utils.Random;
import com.symantec.premiumServices.asyncThreading.abstract.AbstractAsyncThread;
import com.symantec.premiumServices.asyncThreading.interfaces.IAsyncThreadResponder;
import mx.controls.Label;
public class WorkBee extends AbstractAsyncThread implements IAsyncThreadResponder
{
private var _lab:Label;
public function WorkBee(lab:Label)
{
_lab = lab;
super();
super.priority = super.RUN_LEVEL_REAL_TIME;
}
public function execute():void
{
var random:Random = Random.getInstance();
random.digit = 1;
random.radix = Random.NUMBER;
_lab.text = random.createRandom();
}
}
}
application中代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import threads.WorkBee;
import com.symantec.premiumServices.asyncThreading.AsyncThreadingManager;
import mx.collections.ArrayCollection;
private var threadList:ArrayCollection = new ArrayCollection();
private function init():void {
threadList = new ArrayCollection();
for(var i:int=0;i<7;i++) {
var workBee:WorkBee;
switch(i) {
case 0:
workBee = new WorkBee(lab1);
break;
case 1:
workBee = new WorkBee(lab2);
break;
case 2:
workBee = new WorkBee(lab3);
break;
case 3:
workBee = new WorkBee(lab4);
break;
case 4:
workBee = new WorkBee(lab5);
break;
case 5:
workBee = new WorkBee(lab6);
break;
case 6:
workBee = new WorkBee(lab7);
workBee.wake()
break;
}
threadList.addItem(workBee);
}
}
private function onClick():void {
if(btn.label == "开始抽奖") {
for(var i:int=0;i<7;i++) {
if(threadList[i].sleeping) {
threadList[i].wake();
} else {
threadList[i].start();
}
}
btn.label = "停止抽奖";
} else if(btn.label == "停止抽奖") {
for(var i:int=0;i<7;i++) {
threadList[i].sleep();
}
btn.label = "开始抽奖";
}
}
]]>
</mx:Script>
<mx:FormItem verticalCenter="0" horizontalCenter="0" direction="horizontal" fontSize="50" fontWeight="bold">
<mx:Label id="lab1"/>
<mx:Label id="lab2"/>
<mx:Label id="lab3"/>
<mx:Label id="lab4"/>
<mx:Label id="lab5"/>
<mx:Label id="lab6"/>
<mx:Label id="lab7"/>
<mx:Button id="btn" label="开始抽奖" click="onClick()"/>
</mx:FormItem>
</mx:Application>
注意的点:
线程方法:start()启动线程
sleep()休眠线程
sleeping线程是否处在休眠状态
wake()重新激活线程
kill()杀掉线程
async-threading
还提供AsyncThreadingManager来管理所有的进程
提供的方法:
shutDown()停掉所有的线程
killAllThreads()杀掉所有的线程
还支持线程之间通信,利用sendMessageToThreads(name:String,body:Object):Boolean
将其中的代码移植到 Flex4的项目中 在创建线程的时候 报错
TypeError: Error #1009: Cannot access a property or method of a null object reference.
解决办法:
下载 AsyncThreading_2.1 源码到本地,修改 com.symantec.premiumServices.asyncThreading.handlers.FPSObserverHandler 中的代码 如下:
import mx.core.Application;
修改为:
import spark.components.Application;
private var _appRef:Application = Application.applicationas Application;
修改为:
private var _appRef:Application = FlexGlobals.topLevelApplication as Application;
OK 完成 错误解决!
发表评论
-
flex 自定义多个命名空间以及标签名
2013-01-22 15:21 1266flex 自定义多个命名空 ... -
FLEX中使用AS动态创建DataGrid
2013-01-09 16:24 883FLEX中使用AS动态创建DataGrid 2010年2月6日 ... -
flex与flash之间相互调用
2012-12-12 12:39 610http://www.cnblogs.com/kaixuan/ ... -
Flex与Flex创建的swf通信
2012-12-12 10:16 703加载子SWF的Flex程序代码 <?xml vers ... -
[AS3]加载视频(FLV)文件
2012-12-06 15:11 847[AS3]加载视频(FLV)文件 分类: FLEX/CS3-- ... -
通过FileReference打开本地图片崩溃的解决方法
2012-12-06 14:02 705通过FileReference打开本地图片崩溃的解决方法 最近 ... -
使用FileReference的load()方法加载本地图片
2012-12-06 13:56 8961、要想使用FileReference的load()方法和da ... -
[AS3]Bitmap序列化(将BitmapData保存为原生Binary/ByteArray)
2012-12-06 13:48 748[AS3]Bitmap序列化(将BitmapData保存为原生 ... -
as3 画五角星算法
2012-12-05 16:49 2594as3 画五角星算法 阅读:10次 时间:2012-03- ... -
flex嵌入完整html
2012-11-29 11:18 797有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTM ... -
flex4 textArea的htmlText属性
2012-11-29 11:13 3097它现在包含Text布局框架(Text Layout Frame ... -
Tooltip应用
2012-11-29 11:11 699创建ToolTip: var errorToolTip:To ... -
数据绑定显示问题
2012-10-27 12:11 629数据绑定实时变化。 XMLListCollection 可以变 ... -
待解决问题
2012-09-18 23:48 6891.仪表盘 2.渐变填充的使用 3.发光效果的完美运用 能在一 ... -
as3加载外部图片的两种方式
2012-09-09 11:46 985package net.burchin.loading { ... -
公式as3
2012-09-06 18:13 0as3 1人收藏此文章, 我要收藏 发表于1年前(2011-0 ... -
自定义column renderer
2012-08-09 15:07 896<?xml version="1.0" ... -
drowshadowFilter
2012-08-09 15:05 648DropShadowFilter 类,在Flash中为各种对象 ... -
123123
2012-08-08 17:16 0http://www.oschina.net/code/sni ... -
flex 画面快照截图与显示
2012-08-08 11:32 1036一、对指定画面进行快 ...
相关推荐
flex使用Socket与C++服务器交互,服务器可以实现多线程,解决安全沙箱问题。
flex的socket客户端连接java多线程socket服务端demo
Flex中不用ScrollBar实现滚动效果
flex中文帮助flex中文帮助flex中文帮助flex中文帮助
动态实现多文件上传,基于flex技术,可以动态监控上传进度。
完美解决Flex3 中 实现 图文混排 。
简洁的实现了在flex中实现背景音乐的功能
flex advancedDataGrid 中如何实现带checkbox的树
NULL 博文链接:https://fzlihui.iteye.com/blog/953299
完美解决 Flex 4 中 实现 图文混排
flex实现 ComboBox中下拉checkbox 经测试好用,还有可移动面板,和可改大小面板实例
flex中文帮助文档flex中文帮助文档
Flex与Java实现通信,Flex与Java实现通信,Flex与Java实现通信
简洁实现flex中条形统计图,更加美观,适合初学者学习
flex中默认的tab都是一行的,要使用多行的tab,可以参考这个例子的代码。
flex 多线程 ,flex 多线程
在FLEX4中开发带有过滤功能的DATAGRID组件
在flex中在同一界面实现切换效果,代码简单,易懂。
Flex 中Tab(选项卡的实现),包含代码和完成后的样子,主要是用选项卡在一个里面添加然后跳转到另一个选项卡中显示出来
主要练习应用flex布局,模拟实现静态知乎首页。 包含知识点:字体图标,伪类,flex布局等模拟实现静态知乎首页