|
|
系统盘空间不断减少, 清理系统补丁文件, 临时文件以及浏览器缓存后问题依旧.
随后查到C:\Users\king\Videos(“我的视频”),发现此文件夹有将近5GB.
均是以”stats_”为前缀命名的文件夹, 多则几百兆, 少则十几兆.
打开后均含Audio, Muxer, rtmp三个文件夹.
有rtmp字样, 加上最近在使用FMLE3, 料想这是软件生成的日志.
打开配置文件, 果真其中的日志功能是打开的, 且默认是保存到MyVideos中.
<logs>
<!– Enable/Disable log writings. –>
<!– “true” to Enable log writings. –>
<!– “false” to Disable. [...]
以前在做白板时曾考虑过这个组件, 但当时的版本没有旋转功能, 于是放弃了.
现在好了, V2已经支持旋转, 并且发布了FLEX SDK 4的版本.
点击打开演示
原文地址:
http://www.rogue-development.com/blog2/2009/11/objecthandles-version-2-first-release/
大意为:
“为了广大的ObjectHandles fans,我把ObjectHandles 2使用FB4/Flex 4 SDK, 并且修改了一些BUG, 同时搭建了个环境, 方便将OH2发布到google code.现在大家可以在google code的下载页面中下载OH2了(之前只能从subversion中提取代码和程序).发布包中含有源代码, 文档以及可用于Flex 3及Flex 4的预编译SWC.
我想尽快的为这个版的ObjectHandles编写出更好的使用文档.如果你在用ObjectHandles第1版,移植到第2版可能不是一个简单的事情.工作机理有很大的变化了.”
下载地址:
http://code.google.com/p/flex-object-handles/downloads/list
原文地址:
http://www.gridlinked.info/how-to-encrypt-flex-rsls/
这里截取并尝试翻译了一段FLEX程序初始化及此解密过程.
应用启动过程:
1. 首先, 为第1帧加载足够的数据.
2. Flash Player通过创建SystemManager实例执行加载数据.
3. SystemManager命令Flash Player停止在第一帧.
4. SystemManager创建Preloader,
通过它创建DownloadProgressBar控件并显示在客户界面上.
5. Preloader开始从FLEX SWF(或外部SWF)加载其余数据.
一旦FLEX框架及程序代码数据加载, System Manager跳到第2帧并初始化Application实例.
1) 所有的RSL及相关类现在已加载[到ApplicationDomain];
注意加载的顺序就是app编译时定义的顺序.
2) 所有应用程序使用的类定义(视图, 逻辑等)先加载到第2帧.
注意这里, 在第一帧的preloader代码甚至可以在FLEX框架类加载前, 安装补丁到其中.
3) 这种技术就被叫做”monkey-patching”, 会被用在后面提到的解密过程中.
6. 一旦Application实例创建, SystemManager设置
Application.systemManager指向自己,
之后你就可以访问SystemManager了.
7. Application在初始化处理开始前派发预初始化(preinitialize)事件.
8. Application继续创建内部实例.
application调用createChilden()方法.
这时每个应用的组件被构造并调用自己的createChilden()方法.
具体情况参考组件生命周期章节.
9. Application派发初始化(initialize)事件,
指明所有的组件已被初始化.当然, 此时所有的组件尚未布局.
10.最后,所有的子控件及容器被创建并设置大小及位置后,
Application就会派发creationComplete事件.
11.creationComplete事件派发后,
Preloader移除DownloadProgressBar 控件,
SystemManager将Application实例加到Flash Player的
显示列表中(Flash Player display list基本上是个树结构,
包含着可视及潜在可视对象,构成整个应用.
当向应用中添加或移除组件时,
基本上就是将它们从显示列表(display list)中添加或移除掉).
12.Application一旦添加到Flash Player显示列表中,
Application派发applicationComplete事件.
13.Application此时已被创建好并显示到屏幕上准备与用户交互了.
这种RSL的解密过程如下:
1.Flash Player加载已加密的RSL/SWF并同时派发RSLError事件;
这会停止预加载过程使程序”挂起”.
2.中断掉这个事件防止由于冒泡机制被其他监听器捕获;
这能有效的阻止加载序列中的其他RSL.
3.使用Nitro-LM,异步请求RSA解密密钥.
4.重新加载加密的RSL(清除已加载的SWF字节码).
5.解密数据.
6.将已经解密的数据加载到AVM中.
7.通知Preloade恢复加载其他等待的RSL.
很巧妙的一个方法
FlexPMD可以用来改进Flex或AS3 Project的代码质量.
资料参考:
[b]
FlexPMD开源项目发布
使用FlexPMD改进AS3/Flex代码质量
FlexPMD – Finding worst practices in your projects
[/b]
Windows操作系统, 下载了command line版本(1.0.RC3). 解压到D:\Program Files\Adobe\flex-pmd
打开命令行窗口, 输入D:, 回车进入D盘, 输入cd D:\Program Files\Adobe\flex-pmd, 回车, 进入pmd目录
键入java -Xmx256m -jar flex-pmd-command-line-1.0.RC3.jar
注意更换版本号, 这里有可能与你下载的不同.
回车, 输出:
2009-9-3 9:59:08 com.adobe.ac.pmd.commandline.FlexPMD areCommandLineOptionsCorre
ct
严重: Usage: java com.adobe.ac.pmd.commandline.FlexPMD (-s|–sourceDirectory) (-o|–outputDirectory) [(-r|--ruleSet) ] [(-e|--excludePackage) ]
-s 就是源代码目录, -o 输出检测结果目录, -r 检测规则 -e应该是排除检测的包
例如, 运行:
java -Xmx256m -jar flex-pmd-command-line-1.0.RC3.jar -s D:\Work\oVideoPlayer\src -o D:\testPMD
运行结束后, 发现生成了pmd.xml文件.
然后我们打开FlexPMD Violations [...]
具体介绍及下载请移步艾睿网
目 录
第一章 Flash Builder 4 背景
1.1 从Flex Builder到Flash Builder
第二章 Flash Builder 4 界面
2.1 主界面
2.2 主菜单
2.3 工具条
2.4 主要窗口
第三章 Flash Builder 4 新特性
3.1 Package explorer
3.2 悬停时的ASDOC提示
3.3 Getter & Setter
3.4 自动生成EventHandler
3.5 条件断点
第四章 Flex SDK 4 新特性
4.1 主题
4.2 布局
4.3 特效
4.4 样式
4.5 状态
4.6 双向绑定
4.7 ASDoc
4.8 SWFObject 与 HTML Template
第五章 自定义组件开发
5.1 自定义Flex组件
5.2 MXML组件开发
5.3 ActionScript组件开发
第六章 与服务端通信
6.1 通过Http Service与服务端通信
6.2 通过Web Service与服务端通信
6.3 通过Remoting与服务端通信
6.4 与Flash [...]
消息来源:
http://blog.digitalbackcountry.com/2009/06/evtim-is-blogging-all-about-flex-4-layouts/
Evtim on Flex SDK,是SDK Team的工程师,将会写一系列关于FLEX 4的布局教程,喜欢这方面的同学们要密切关注他的Blog
aihanzi提了很多建议,非常感谢
对于容器中出现水平和垂直滚动条时,两条滚动条交汇处会生成一个纯白色的矩形,目前并无样式支持。
对FLEX theme的编写多少有些影响。
综合aihanzi的建议和网上的资料,修改了mx.core.Container类,添加了三个基本的样式属性:
whiteBoxColor – 颜色(明明是white box,还要设置颜色 -_-!!!)
whiteBoxAlpha – 透明度
whiteBoxVisible – 是否可见
先看示例: Demo
接下来正式开工:
我们首先进入到FLEX SDK(本文适用sdk 3.2.0版)中:
sdks/3.2.0/frameworks/projects/framework/src/mx/core
将Container.as,Version.as复制到当前项目中,包路径也要相同,就是说复制到项目中mx/core文件夹下。
然后再用相同的方法将SDK中的mx.styles.metadata下面的:
BarColorStyle.as
BorderStyles.as
PaddingStyles.as
TextStyles.as
复制到项目中。最后结构如图:
然后打开Container.as,找到createOrDestroyScrollbars方法(4401行),然后定位到4540行,
可以看到下面几行代码是设置whiteBox的。
我们修改生成whiteBox的代码部分,加入支持的样式,最后代码如下:
if (!whiteBox)
{
whiteBox = new FlexShape();
whiteBox.name = “whiteBox”;
var g:Graphics = whiteBox.graphics;
var wbc:Number = StyleManager.getColorName(getStyle(“whiteBoxColor”));
var wba:Number = Number(getStyle(“whiteBoxAlpha”));
isNaN(wbc) ? wbc = 0xFFFFFF : null;
isNaN(wba) ? wba = 1.0 : null;
g.beginFill(wbc, wba);
g.drawRect(0, 0, verticalScrollBar.minWidth, horizontalScrollBar.minHeight);
g.endFill()
rawChildren.addChild(whiteBox);
var wbv:Boolean = getStyle(“whiteBoxVisible”).toString().toLowerCase()!=”false”;
whiteBox.visible = wbv;
}
上面是生成whiteBox的代码,那么若样式在运行时修改呢?
别急,我们再定位到2987行的styleChanged方法。
我们在方法尾部加入:
if (allStyles ||
styleProp == “whiteBoxColor” ||
styleProp [...]
看到网上有人提出过这个问题,想使FLEX生成的SWF文件如同FLASH IDE生成的,在wmode=transparent时效果相同。
但通过简单的设置backgroundAlpah=0是无效的,FLEX仍会生成一层透明的背景。
通过追踪Application代码,可以得知Application继承了LayoutContainer,
而在LayoutContainer的updateDisplayList方法中(第403行),可以找到如下代码:
// Wait to layout the border after all the children
// have been positioned.
createBorder();
createBorder是LayoutContainer继承的Container类中的方法:
Container中4008行:
rawChildren.addChildAt(DisplayObject(border), 0);
可知在索引0处增加了一个border,定位到498行:
/**
* @private
* The border/background object.
*/
mx_internal var border:IFlexDisplayObject;
除此之外,在systemManager存在一个Sprite的实例:mouseCatcher,见SystemManager 435行:
private var mouseCatcher:Sprite;
是SystemManager的第0级child(1级为application)
和stage高宽相同,且透明度为0。
转到2799行,可以看到绘制过程:
private function resizeMouseCatcher():void
{
if (mouseCatcher)
{
try
{
var g:Graphics = mouseCatcher.graphics;
var s:Rectangle = screen;
g.clear();
g.beginFill(0×000000, 0);
g.drawRect(0, 0, s.width, s.height);
g.endFill();
}
catch (e:SecurityError)
{
// trace(“resizeMouseCatcher: ignoring security error ” + e);
}
}
}
OK,现在回到主程序中,我们在applicationComplete事件将以上两个对象提出出来,然后在updateDisplayList中进行处理。最好不要尝试移除这两个对象,这样有可能产生异常;如果不是特别要求,尽量不要干涉或修改FLEX管理机制
查看全部代码:Source
查看示例:Demo(IE required)
IE8.0+Flash Player 10 ActiveX通过测试
51个AS3和FLEX优化技巧
“提速”技巧和规范的文章,很有必要了解一下
地址:
http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html
不过文章的评论也很有价值,千万不要错过
相关文章:
AS3代码建议书写规范
ADOBE wiki中的编码规则:
http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions
再列出以前的一篇关于FLEX编码指南:
http://blog.dclick.com.br/2007/02/13/adobe_flex_coding_guidelines_english/pt
博主仿Buzzword的组件
View Source.
Demo
很实用
Page 1 of 612345»...Last »
|
|
Comments