ActionScript 3 Tip of the Day

本文介绍了ActionScript 3的一些实用技巧,包括动态调整帧率、使用ByteArray进行对象深拷贝、确定实例及其父类的类名、加载文本及XML文件、获取声音频谱信息以及垃圾回收机制等内容。
今天看到aw的blog上好象要翻译AS3 Tip of the Day 才想起来偶也看过这个,但是后来没坚持翻下去,也就没发出来,正好最近这一系列又更新了一些关于flash cs3相关的内容,所以还是打算继续把他看完,以下有些是简译,有些是直译,有些根本不是翻译,是摘录或是看完后用我自己的话组织的,方便我自己查看,想看完整翻译的还是等看aw的吧,偶的英语水平跟他差远了
[1b]General:[/1b]
[1b]1. 动态改变帧频: [/1b]
 // change frame rate to 12 fps:
 stage.frameRate = 12;
[1b]2. Abstract Classes [/1b]
as3不支持抽象类,但有几个内置的抽象类
DisplayObject
InteractiveObject
DisplayObjectContainer
Graphics
as3中这意味着不能实例化这些类,也不能继承他们 ,以下为错误操作:
// 错误1
var myObj:InteractiveObject = new InteractiveObject(); // ERROR
// 错误2
package {
 import flash.display.DisplayObject;
 public class MyDisplay extends DisplayObject{
 public function MyDisplay (){
 // ERROR
 }
 }
}
[1b]3. Deep Object Copies with ByteArray [/1b]
as3中很容易使用(flash.utils.ByteArray)类来进行对象的深拷贝,深拷贝不只拷贝引用,而是拷贝整个相关对象,
例如一个array里包含一个object引用,这个object也将被拷贝
注意:这个方法通常用来拷贝一般的object
拷贝函数:
function clone(source:Object):* {
 var copier:ByteArray = new ByteArray();
 copier.writeObject(source);
 copier.position = 0;
 return(copier.readObject());
}
使用方法:
newObjectCopy = clone(originalObject);
[1b]4. Determine Instance Class or Superclass [/1b]
as3中可以很容易的获取某个实例所属的类和父类的类名,使用这两个方法
getQualifiedClassName (flash.utils.getQualifiedClassName).
getQualifiedSuperclassName (flash.utils.getQualifiedSuperclassName)
var sprite:Sprite = new Sprite();
trace(getQualifiedClassName(sprite)); // "flash.display::Sprite
trace(getQualifiedSuperclassName(sprite)); // "flash.display::DisplayObjectContainer"
你甚至可以由字符串获得类的引用,使用这个方法
getDefinitionByName (flash.utils.getDefinitionByName).
getDefinitionByName("flash.display::Sprite")); // [class Sprite]
[1b]5. Multiple Arguments in trace() [/1b]
as3
trace(value1, value2, value3);
as1,as2
trace([value1, value2, value3]);
[1b]6. Loading Text and XML with URLLoader [/1b]
var loader:URLLoader;
// ...
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlLoaded);
var request:URLRequest = new URLRequest("file.xml");
loader.load(request);
//...
function xmlLoaded(event:Event):void {
 var myXML:XML = new XML(loader.data);
 //...
}
[1b]7.Get Sound Spectrum Information[/1b]
(flash.media.SoundMixer)类的computeSpectrum静态方法可以把正在播放的声谱信息转成ByteArray,由此你可以想到办法把声谱可视化显示出来
// play sound...
var spectrumInfo:ByteArray = new ByteArray();
SoundMixer.computeSpectrum(spectrumInfo);
// spectrumInfo is now a byte array with sound spectrum info
具体可视化的方法可以看swfdong那里的教程 :)
[1b]8. Garbage Collection: Reference Counting & Mark and Sweep[/1b]
垃圾回收机制包含两个关键:
(1)Reference Counting (引用数) :
引用数就是在内存中引用同一个object的变量多少,每增加一个变量引用该object,引用数就+1
var a:Object = new Object(); // new Object in memory given reference count of 1
var b:Object = a; // Object now has reference count of 2
无论什么时候,当没有变量引用该object的时候,垃圾回收就会把他们回收了
delete a; // Object has reference count of 1
delete b; // Object has reference count of 0, removed from memory
注意delete只能删除非成员变量,而且删除的是引用该object的变量而不是将object从内存中删除,那是垃圾回收器要做的事
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1842.html
采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值