- 浏览: 100477 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1336flex 自定义多个命名空 ... -
FLEX中使用AS动态创建DataGrid
2013-01-09 16:24 919FLEX中使用AS动态创建DataGrid 2010年2月6日 ... -
flex与flash之间相互调用
2012-12-12 12:39 628http://www.cnblogs.com/kaixuan/ ... -
Flex与Flex创建的swf通信
2012-12-12 10:16 733加载子SWF的Flex程序代码 <?xml vers ... -
[AS3]加载视频(FLV)文件
2012-12-06 15:11 863[AS3]加载视频(FLV)文件 分类: FLEX/CS3-- ... -
通过FileReference打开本地图片崩溃的解决方法
2012-12-06 14:02 719通过FileReference打开本地图片崩溃的解决方法 最近 ... -
使用FileReference的load()方法加载本地图片
2012-12-06 13:56 9371、要想使用FileReference的load()方法和da ... -
[AS3]Bitmap序列化(将BitmapData保存为原生Binary/ByteArray)
2012-12-06 13:48 760[AS3]Bitmap序列化(将BitmapData保存为原生 ... -
as3 画五角星算法
2012-12-05 16:49 2630as3 画五角星算法 阅读:10次 时间:2012-03- ... -
flex嵌入完整html
2012-11-29 11:18 815有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTM ... -
flex4 textArea的htmlText属性
2012-11-29 11:13 3117它现在包含Text布局框架(Text Layout Frame ... -
Tooltip应用
2012-11-29 11:11 732创建ToolTip: var errorToolTip:To ... -
数据绑定显示问题
2012-10-27 12:11 681数据绑定实时变化。 XMLListCollection 可以变 ... -
待解决问题
2012-09-18 23:48 7231.仪表盘 2.渐变填充的使用 3.发光效果的完美运用 能在一 ... -
as3加载外部图片的两种方式
2012-09-09 11:46 1046package net.burchin.loading { ... -
公式as3
2012-09-06 18:13 0as3 1人收藏此文章, 我要收藏 发表于1年前(2011-0 ... -
自定义column renderer
2012-08-09 15:07 964<?xml version="1.0" ... -
drowshadowFilter
2012-08-09 15:05 678DropShadowFilter 类,在Flash中为各种对象 ... -
123123
2012-08-08 17:16 0http://www.oschina.net/code/sni ... -
flex 画面快照截图与显示
2012-08-08 11:32 1054一、对指定画面进行快 ...
相关推荐
"flex与C++多线程服务器端交互"这个主题涉及了几个关键的技术点,包括Flex技术、Socket通信、多线程以及C++后端的实现。 首先,Flex是一种基于ActionScript的开放源代码框架,主要用于创建丰富的互联网应用程序...
"async-threading 让flex支持多线程"这个标题表明我们正在讨论如何在Adobe Flex环境中实现异步多线程处理。Flex是一种基于ActionScript的开放源码框架,常用于构建富互联网应用程序(RIA)。在Flex中,由于其默认的...
本示例探讨了如何使用Adobe Flex作为客户端,通过Socket接口与Java实现的多线程Socket服务端进行通信。以下是对这个主题的详细解释: 首先,Flex是一种开放源代码的富互联网应用程序(RIA)开发框架,它允许开发者...
在Flex中,多线程是一个关键概念,尤其对于处理复杂计算或长时间运行的任务时,多线程能够提高应用程序的响应性和用户体验。 在Flex中,由于其运行在Flash Player或者Adobe AIR环境中,传统的多线程模型并不直接...
标题中的“多线程worker”指的是在编程中使用多线程技术来实现并发处理的机制。在计算机程序中,线程是程序执行的基本单元,一个进程中可以包含多个线程,它们共享同一内存空间,但各自拥有独立的执行路径。多线程...
了解以上知识点后,开发者可以对这个Flex多文件上传控件进行自定义,以适应特定项目的需求,如添加权限验证、文件预览功能、多线程上传等。总的来说,这个控件提供了一个灵活的基础,帮助开发者快速实现高效的文件...
10. **优化**:为了提高性能,可以考虑使用分块上传或多线程上传技术,尤其是处理大文件时。此外,还可以利用异步处理来避免阻塞UI。 以上就是使用Flex实现文件上传及进度显示的关键知识点,这些内容涵盖了从用户...
另外,为了优化用户体验,可以考虑使用异步上传或多线程上传技术,比如使用SWFUpload或Plupload这样的第三方库,它们提供了更高级的多文件上传功能。 总的来说,Flex的多文件上传涉及到客户端的用户交互、文件选择...
总之,《Flex 4: 多线程解决方案》这篇文章提供了关于如何在Flex 4环境中实现多线程的指导,帮助开发者优化应用程序性能,提供更流畅的用户体验。通过理解和应用这些知识,我们可以更好地应对复杂的计算任务,同时...
Java还支持多线程编程,适合处理大量并发请求。通过使用RESTful API或者SOAP Web服务,Java可以与Flex前端进行通信,传递数据和指令。 Flex作为前端,主要利用Adobe Flash Player或Adobe AIR运行,为用户提供动态、...
在Flex 4.6与Adobe Integrated ...这只是一个基础示例,实际应用中可能需要考虑更多的细节,比如文件编码、多线程操作、异步处理等。但作为新手入门,掌握这些基础知识已经足够帮助你理解和构建简单的文件操作功能。
4. 多线程处理:如果上传文件数量较大,可能需要多线程来异步处理,提高性能。 `FileUpload.html`文件可能是Flex应用的启动页面,其中包含Flex组件和与`upload.aspx`交互的AJAX请求。Flex部分的开发可能涉及以下...
- **多线程处理**:利用 Flex 的多线程支持来处理耗时任务。 **8. Flex 项目管理和版本控制** 对于大型或团队协作的 Flex 项目,有效的项目管理和版本控制系统至关重要。常用的版本控制工具有 Git、SVN 等。此外,...
总之,`Worker`类在Flash Builder 4.7中的引入为Flex开发者提供了一种高效且安全的多线程解决方案,使得复杂应用的性能得到显著提升。正确理解和利用这一特性,能让你的Flex应用变得更加响应迅速和用户友好。
同时,对于大量文件上传,可能需要考虑分块上传和多线程处理以提高性能。 6. **用户体验**:在设计文件上传界面时,应考虑用户体验,如进度条显示、错误提示、取消上传功能等。 7. **Flex与Java集成**:BlazeDS或...
在处理多线程和并发任务时,这个库可能会被引入。 4. **commons-httpclient-3.0.1.jar**:Apache Commons HttpClient库,用于执行HTTP请求。在Flex应用中,如果需要与服务器进行HTTP通信,比如获取或发送数据,这个...
此外,优化上传速度和用户体验也很重要,比如使用多线程上传、断点续传等技术。 8. **状态管理**:由于文件上传可能需要时间,因此状态管理是关键。用户需要知道文件何时开始上传、上传进度以及是否成功。Flex提供...
5. **性能优化**:Flex提供了多种选项来优化生成的词法分析器,如缓冲区大小、多线程支持等。 6. **Unicode支持**:Flex 2.5.2可能已经支持Unicode字符集,这对于处理非ASCII编码的编程语言至关重要。 7. **与其他...
Java的核心特性包括垃圾回收、异常处理和多线程,使其成为企业级应用开发的理想选择。在Web开发领域,Java Servlets和JavaServer Pages(JSP)常用于构建动态网页,而Spring框架、Hibernate ORM和Struts等库则提供了...
在Flex 4.7中,Worker类就是实现多线程功能的核心。Worker类允许开发者在主应用程序线程之外创建新的线程,这样主线程就可以专注于处理UI更新,而不会因为耗时操作而阻塞。 使用Worker类的步骤通常包括以下几个关键...