Stage3D硬件检测和要求

一、官方要求:http://helpx.adobe.com/x-productkb/multi/stage3d-unsupported-chipsets-drivers-flash.html

所有平台 任何不支持Pixel Shader 2.x及以上的GPU Intel GMAs that DON’T support Pixel Shader 2.x: 740, i752, IEG, IEG2, GMA 900, GMA 950, GMA 3000, GMA 3100, GMA 3150 Chrome VIA Chipset Windows

任何早于2009年一月一日的驱动
NVIDIA driver 8.17.11.9621
NVIDIA driver 8.17.11.8267
Any Intel GMA driver before X.X.10.2021

Macintosh

All Intel GMAs
ATI Radeon X1600
ATI Radeon 2400
Firefox 3.6 and earlier
Mac OS X 10.5

  *Linux系统仅支持软渲染 *Mac和Windows上Intel HD GPU完全支持 推荐 因为2009一月1号之前的驱动全部不支持,强烈推荐你升级显卡驱动。如果升级后仍只能使用软渲染,你的显卡很可能不被支持。

二、硬件检测 (1)快速检测:http://wonderfl.net/c/jJzk (2)另一种检测方式

运行这个工具 http://zp.amsnet.pl/cdragan/d3dcaps.html 得到一个叫 ‘devcaps.txt’ 的文件。 查看两个着色器的值。

VERTEX_SHADER_VERSION FFFE0200

PIXEL_SHADER_VERSION FFFF0200

忽略FFFE/FFFF, 只看红色部分的值,这个值必须都大于0200 才能支持molehill, 否则就软解。 注意,这两个值会在devcaps.txt文件中出现两次,用后面出现的那一组 (第一组的值是0104,忽略即可),如果上述值正常,但让没有效果,那就参考上文 硬件要求,也许你的显卡不支持。

Robotlegs 进阶开发笔记【转】

【本文属于转载,阅读原文:http://www.wersling.com/?p=675Robotlegs是一个很独特的MVCS框架,2年前我开始使用它,并用于一些项目中,那个时候Robotlegs还是bate版本,现在已经更新到1.4,更多的人已经开始学习它并用到项目中。在学习和使用过程中,我整理和体会到一些有用的知识点,希望和正在学习和使用Robotlegs的同学分享。 因为是进阶内容,因此,建议对Robotlegs还在入门阶段或没有使用它到项目中的同学先看看这些内容,会对你更好的理解后面的内容有帮助。当然,如果你对Robotlegs已经熟悉,可以跳过。

恩,如果你有所了解了,我们开始后面的内容。 Robotlegs代码包结构组织:

  1. [domain.lib]
  2.     various utilities
  3. [domain.project]
  4.     [projectmodule]
  5.         [model]
  6.             [events]
  7.             [vo]
  8.             ProjectModuleStateModel
  9.         [view]
  10.             [events]
  11.             [renderers]
  12.             [skins]
  13.             MyProjectModuleView
  14.             MyProjectModuleViewMediator
  15.         [controller]
  16.             [startup]
  17.             MyProjectModuleActionCommand
  18.         [service]
  19.             [helpers]
  20.             MyProjectModuleService
  21.             IProjectModuleService
  22.         [signals]
  23.     [projectmodule]
  24.         [model]
  25.             [events]
  26.             [vo]
  27.             ProjectModuleStateModel
  28.         [view]
  29.             [events]
  30.             [renderers]
  31.             [skins]
  32.             MyProjectModuleView
  33.             MyProjectModuleViewMediator
  34.         [controller]
  35.             [startup]
  36.             MyProjectModuleActionCommand
  37.         [service]
  38.             [helpers]
  39.             MyProjectModuleService
  40.             IProjectModuleService
  41.         [signals]
  42.     …

  这是Joel Hooks建议的包结构,我作一些修改和说明:

  • 这是一个多模块情况的包结构,如果是单模块,可以少去projectmodule这一层。
  • [signals]包不是必须的,除非你用到了Signals
  • 把每个模块要都用到的公共代码放到[domain.lib]下。模块和模块内代码保证独立,不会相互使用(引用,实例化)。
  • StartupCommand 内代码建议以MVC结构分离。如果一个模块中StartupCommnad内有过多代码,建议把它拆分成 ModelStartupCommand,ControllerStartupCommand和ViewStartupCommand,这样职责更清晰。
  • [controller]和[view]中,如果有很多类,建议按照功能建立子目录
  • 这些目录看上去如此之多,我可不想一个一个创建,因此,我写了一个Ruby小脚本,用于创建这些目录和基础代码,有兴趣的可以看看。

边界与约定:

  • 避免在Proxy中注入其他Proxy和Service,尤其不要侦听他们的事件。
  • 避免Proxy采用单例模式,而是采用Robotlegs的injector.mapSingleton方法,单例意味着任何类成员都可以访问和修改,这会增加代码的复杂度和维护成本。
  • 非必要,避免将View或Mediator存入Proxy。
  • 建议在Mediator中只获取Proxy的数据,而不设置或管理数据。
  • PopupWindow(如果它被添加到stage)建议在Mediator中实例化,这有利于手动构造Mediator和侦听事件。
  • 非必要,避免使用viewMap。它会使View绕过Mediator而直接与数据层交互。
  • 避免在Command中注入一个View或Mediator。
  • Service的方法建议在Command中调用,而不是在Mediator中,这样可以更好的复用。当然,一个简单的方法是可以接受的。
  • 最后一条:Service只是负责将加载的数据通知(dispatch event)出去,自己并不存储数据。

多模块: Robotlegs提供一个多模块工具:robotlegs-utilities-Modular。可以方便的进行模块和模块之间的通信。它看上去十分优雅,用起来也十分方便。下面是几点要注意的地方:

  • 尽量将模块内事件和模块间的事件分开,不要混杂着用,我定义了一个IModuleEvent接口,用于区分它们。
  • 所有需要公用的对象或类(VO,Proxy,Service)都在主模块的Startup时注入,这样子模块都可以很方便的用到。

开发效率: Robotlegs的底耦合和清晰的职责被人称赞,实现一个功能需要的类文件之多也使其他MVC框架望其项背。^_^’ 因此在开发过程中,也许你会烦躁那些重复的操作——创建众多的类文件。

  • 采用Signals可以有效减少View-Mediator的事件对象,其效率高于事件机制。CommandSignals也可以用Signals驱动,但是不会节省你的类文件数量。
  • 采用代码模板功能快速生成代码。如果你连这个模板都不想写,有热心人已经帮你创建了不少:Flash BuilderFTDFlashDevelop
  • Robotlegs的状态机(StateMachine),和PureMVC的状态机类似。在处理带有状态或流程的操作中很有用,比如与服务器连接状态、多步骤的表单提交、带条件判断的问卷调查等等。
  • 不一定在项目过程中完全贯彻使用MVC框架,尤其是在WebGame项目中,可以把功能单一的部分做成一个组件,对外提供接口就可以。比如场景渲染引擎、寻路算法、播放器等。看上去就像在使用一个第三分工具库一样。
  • 由于Robotlegs职责分明,因此可以根据MVCS的来分工:
    • 由团队中一部分人来维护服务层(Service)代码,专门处理数据加载和与服务器通信代码编写。
    • 一部分人处理公共数据层代码(Proxy)
    • 一部分人处理界面层代码(View)
    • 一部分人处理业务逻辑,连接数据与界面(Mediator,Command)。这样带来的好处在于一个人只要专注一个部分,因此有更多尽力关注稳定性和性能;坏处是有时会觉得比较无聊,因此时不时要切换着来做不同的部分。小项目中,也许就一个人,是没有办法这样实施的,但是项目大了,完全有必要尝试这样的方式。最后还啰嗦下,很多新人刚刚进入项目,如果对Robotlegs不了解,让他从View层开始开发,有利于学习和确保他更快融入团队。

内存管理(GC): Robotlegs的低耦合性带来的就是优雅的GC,只要是遵循以下原则,内存泄露可以很好的解决,哪怕在复杂的项目也可以:

  • 严格遵守前面提到的【边界与约定】。
  • 为每一个View实现一个dispose方法(确保这个方法真的可以GC所有View内实例和引用),并在Mediator的onRemove方法中调用。
  • 每个模块实现ShutdownCommand,进行与StartupCommand相反的操作。
  • 为每个Actor(Proxy和Service)实现dispose方法,并在ShutdownCommand时调用。

性能: 很多框架用到后面,都会带来或多或少的性能问题,Robotlegs也不例外。建议试试我提出的几个方法:

  • 只要执行一次的Command设置oneshot = true。示例:
    1. commandMap.mapEvent(“eventType”, MyCommand, EventClass, true);

      复制代码

  • 在添加大量Sprite到舞台前,可以设置:mediatorMap.enabled=false;。完成后再设置为true,这样可以避免MediatorMap侦听到ADDED_TO_STAGE事件后频繁进行不必要的操作。也可以使用robotlegs-utilities-LazyMediator来解决这个部分的性能问题。
  • 将一些对性能要求极高的部分写成独立的组件。

必须承认,Robotlegs的学习成本要比PureMVC等框架要高,也复杂一些。还有很多人不喜欢Inject方式,但是我要说,Robotlegs 绝对值得你去尝试。在项目开发中不断的学习和探索,将是一个十分有趣的过程。衷心希望有更多人学习和使用Robotlegs,也分享更多的经验。

Adobe Flash runtimes路线图[转]

Adobe官方在今天发表了一篇非常非常重要的声明文档,是Adobe Flash runtimes路线图。这篇路线图提供了对于Adobe Flash runtimes的开发路线概览,这篇概览的目的是提供一个清楚的指引,告知外界与社区开发者们Adobe现在是如何思考未来1到2年内核心Flash功 能的发展计划。 下面的中文内容要点全部出自该文档由7yue翻译并提炼_) 在过去的10多 年里,Flash Player和Adobe AIR在互联网领域扮演了及其重要的角色,为多个平台系统,浏览器,桌面和设备提供了一致的用户体验内容。从最初的动画实现,Flash runtimes涉及了几乎所有的互联网媒体平台领域。Adobe坚信Flash在未来是契合于游戏和增值视频市场需求的,因此决定将Flash runtimes的开发专注在这些领域。与此同时,Adobe将针对runtimes进行架构和语言上的大幅改进,确保Flash runtimes将在其专注的领域可以提供未来十年的最优秀的用户体验内容制作的支持。 Flash runtimes主要指Flash Player与Adobe AIR两个运行时, Flash content主要指使用ActionScript3语言开发打包而成的SWF文件,通过Flash runtimes来展现。 Flash runtimes core,指Flash runtimes运行时核心功能,包括基础APIs和功能集合。主要的运行时核心在这份官方声明中是指通过Flash Player和Adobe AIR共同分享和具备的功能集合。 上个世纪90年代引入的Flash Player,发展至今,已经通过浏览器插件的形式实现了以下的功能: Animation,矢量图形,音频(包括mp3),视频,麦克风与摄像头外设访问,底层位图操作,2进制数据sockets,强类型基于类的编程模型,基于硬件加速的2D和3D内容。 Flash runtimes的战略核心 伴 随浏览器市场的加速竞争,浏览器厂商大幅增加了直接透过浏览器部署丰富图形动画交互的创新能力,这部分曾经正是Flash Player支持的功能。渐渐地,这部分内容已经可以透过HTML5,CSS3和JavaScript直接在浏览器上实现,而Flash Player在Web领域的需求也开始改变。 Adobe Flash runtimes的战略专注核心将面向2个领域,游戏和增值视频。首要的目标是,提供一流的,引人入胜的,游戏主机级别的图形交互内容和部署一系列的增值 视频服务。这一战略计划不代表Flash runtimes不能支持以前的旧有内容,而是在未来,其研发的核心功能将高度优先支持游戏和增值视频领域。 游戏领域 Flash runtimes将允许Adobe满足市场的全新功能需求,用户通过Flash制作的游戏将快于其他同类型技术,同时还能使游戏触及最广泛的用户群体。Flash runtimes旨在游戏领域提供以下独一无二的优势: 通过Flash Player浏览器插件,触及几乎全球的互联网用户,游戏内容通过Adobe AIR也能交付在移动设备之上 完全基于硬件加速的2D和3D渲染支持,提供游戏主机级别的图形渲染质量 丰富的游戏开发者生态系统 强壮的,面向对象的编程语言 世界级的设计师与开发者工作流 Adobe将围绕游戏市场专注打造一套强壮的业务体系,未来包括(但不限于): 成熟的游戏开发者生态体系 游戏服务体系 允许游戏开发者在Flash游戏中使用C/C++语言的产品化支持 增值视频领域 Adobe Flash满足在线视频市场的爆炸性增长,通过提供高质量的视频,安全保护机制,跨浏览器和操作系统的一致性来达到这一要求。Adobe Flash runtimes在在线视频增值内容上会提供以下方面的支持: 在多个平台上将Adobe视频流媒体服务和内容保护机制引入系统视频文件格式的支持。 支持增值视频内容拥有者的业务需求 同硬件厂商密切合作,提供高质量的整合级别的视频体验服务 通过Flash runtimes打造的一致性播放器,实现多种视频格式编码的跨系统播放支持 支持DRM方案 成熟的全功能视频广告植入及后台分析方案 _7yue:接下来的将是全文档最重要的摘要部分… Flash runtimes技术路线图 下面的技术路线图包含了未来2年的Flash runtimes的发布功能。(这些部分会随着日期不断被Adobe更新) Adobe AIR 未 来Adobe AIR的开发将专注于全力协作核心Flash Player运行时。当桌面和移动设备特有APIs将被研发时,他们将不会特别针对Adobe AIR而实现(含义就是不会有runtime级别的功能只在AIR上有,而player上没有,SDK特别功能除外) Flash Player 11.2 将在2012年第一季度发布内发布,将针对游戏和视频市场添加关键runtime核心功能: 某些计划加入的核心功能有: Mouse-lock支持 鼠标右键与中键事件支持 context menu关联菜单禁用 针对Apple iOS和Google Android平台的Stage3D(通过AIR) Stage3D硬件显卡驱动兼容支持提前至2008年1月  (这个对Starling框架来说是个好消息) 全新的throttling event API (将在Flash页面最小化,暂停,恢复时派发) 多线程视频解码管道 Flash Player “Cyril” Adobe将在2012年第2季度发布的一个版本,code name “Cyril”。此发布将继续为游戏添加核心新功能,关键包括以下部分: 全屏模式键盘输入支持 低延迟音频 Stage3D 纹理素材流式下载 ByteArray的LZMA高压缩支持 Frame label事件体系 Flash Player “Dolores” Adobe将在2012年下半年发布的一个版本,code name “Dolores”。此发布将继续为游戏添加核心新功能,关键包括以下部分: ActionScript workers (允许ActionScript脚本的多个独立线程的并发执行) 高级profiling工具服务 支持更多的独立显卡,驱动兼容检测将提前至2005或2006年 面向iOS发布的ActionScript性能优化 鼠标游离事件体系 Flash Player “Next” 除去上述一系列的Flash Player发布之外,为了领先未来5到10年的市场,Adobe将持续改进Flash Player底层代码,这部分我们称之为Flash Player “Next”计划。下面是一些关键计划(但不限于此): 重构和持续进化Flash runtime核心代码 革新ActionScript VM 更新ActionScript language 这些工作主要目的是为了让Flash runtimes和AS虚拟机显著提升代码执行性能,确保Flash runtimes在下个十年的领先地位。初步实现的计划是2013年。 ActionScript “Next” 从2006年引入ActionScript3后,一定范围内借助AS3实现的应用和内容在这几年发生了显著的变化。Adobe认为是时候认真修订 和掌握其未来的变化了。从语言设计的角度,Adobe将使用下列的假设(设想)来指引下一代的ActionScript开发。 针对长期生产力的增长需求(包括强壮性,模块化和维护程度)和短期生产力的收益特征(快速敏捷开发)来考虑改进语言设计 高性能的要求 硬件实现的要求 首 先,Adobe计划在短期内实现性能的显著提升,并以持续的性能提升为长期目标。所以,性能,性能,性能!将作为我们改进ActionScript的最高 优先级目标。其次,Adobe将通过简化语言,提升工具支持,加速bug预防下手为开发者提高生产效率。最后,降低语言不必要的复杂程度。 以下几点是关于下一代ActionScript语言和虚拟机的有限披露: Stringent static typing as default, with optional dynamic typing,默认非常严格的静态类型和可供选择的动态类型。大多数程序的大多数扩展都受益于语言的静态类型。然而,AS3倾向于在所有场景使用动态类 型,其实绝对严格的静态类型则是首选。这一点将被修正。动态类型仍然存在,但是不再是ActionScript的默认设定,它将在需要使用的时候被明确指 出。 Type inference,类型推断。类型声明将只在特定环境下变的需要。编译器将自动推测合适的类型声明,并且针对整个程序进行静态类型化,即使开发者没有声明任何类型。 Hardware-oriented numeric types,面向硬件的数字类型。例如,int,uint,float,float4,byte,short,long等(具体类型集合在讨论中)。现在 AS3整形数值可以溢出到浮点类型,这一点将会被改动,未来数字的操作将不再数值运算时改变其类型,这能够大幅度降低运算的复杂度,提升runtime性 能。 以上几点仅是我们正在考虑的部分,未来我们将会公布更多如何改动语言和VM的细节。 兼容性 下一个版本的ActionScript将是AS3的一个变革,但是一些场景下将无法完全兼容AS3.Adobe期望从AS3的移植成本可以降到最低,少于当年从AS2迁移到AS3的成本。 平台支持 Flash runtimes将在未来的平台支持上包含如下部分: PC领域 Apple OS X,Adobe承诺将使Flash runtimes支持Apple的最新OS X (Mac OS X的升级),AIR应用也能够分发到桌面或Mac App store。 Microsoft Windows Adobe承诺继续提供Flash runtimes对于微软Windows操作系统的支持。 Window8 微 软目前正在开发Windows8,下一代微软Windows操作系统,这个系统包括一系列不同的配置,包括desktop和metro,以及芯片架构的不 同支持(x86/64和ARM)。Adobe目前正在与微软紧密协作完成最终的Flash runtimes的Windows8配置支持。具体细节将会在最终确定配置类型后公布。 Linux Adobe目前与Google正在紧密 合作开发一款独立的,现代化的API,用来host浏览器的插件。这称为PPAPI,code-name是”Pepper”,目的在于提供一个介于插件和 浏览器之间的抽象层,用来区分浏览器和系统级别的功能实现。更多信息,你可以参考Pepper API在http://code.google.com/ppapi/。Google未来将通过Pepper来实现Chrome全平台版本对于Flash Player的支持,包括Linux系统。 Mobile Flash Player 11.1将是移动设备上基于浏览器的最后一个版本的Flash Player 插件。Adobe将持续投资开发者将Flash内容通过AIR打包分发到移动设备的方案。 TV …… 全英文版本的白皮书在此下载: flash-runtimes-roadmap.pdf

开源类库ASSQL初接触,AS直接连mysql数据库

刚发现这个强大的开源类库,assql,可以让as直接连mysql数据库,猛一下,我觉得豁然开朗,终于,与数据库打交道不需要通过后台了! 之前看网上有人说中文乱码什么,这个问题我没有遇到,我用的是2.8版本,把数据库和表设置为utf-8,中文显示正常! 先给出google项目地址:http://code.google.com/p/assql/ google项目上有几个例子,不过都是Flex的,下面我给个简单纯as的小例子: [codesyntax lang=”actionscript3”]

package
{
import com.maclema.mysql.Connection;
import com.maclema.mysql.MySqlToken;
import com.maclema.mysql.ResultSet;
import com.maclema.mysql.Statement;
import com.maclema.mysql.events.MySqlEvent;

import flash.display.Sprite;
import flash.events.Event;

public class MySqlTest extends Sprite
{

private var con:Connection;
public function MySqlTest()
{
con = new Connection(“localhost”, 3306, “root”, “123456”, “test”);
con.addEventListener(Event.CONNECT, handleConnected);
con.connect();
}

private function handleConnected(e:Event):void {
var st:Statement = con.createStatement();
var token:MySqlToken = st.executeQuery(“SELECT * FROM user_info”);
token.addEventListener(MySqlEvent.RESULT,reslutHandler);
}

private function reslutHandler(e:MySqlEvent):void
{
var rs:ResultSet = e.resultSet;
rs.first();
for (var i:int = 0; i < rs.size(); i++) {
trace(rs.getString(“userId”),rs.getString(“userName”));
rs.next();
}
}

}
}

[/codesyntax]

google SVN 无法获得上传密码的解决办法

问题描述:在使用google SVN时,点击查看项目密码,总是访问不到,链接被重置了 解决方法:修改本地dns设置,添加“74.125.71.94 code.google.com”记录。 1. cmd打开命令行窗口,执行”ping google.com.hk”(注,自google退出中国大陆后,现在的google中文默认的跳转到香港网站即com.hk),得到当前可用的Google ip:74.125.71.94。 2. 找到本地的dns配置文件路径,windows 7 下为“C:\Windows\System32\drivers\etc\hosts”将“  74.125.71.94 code.google.com ”添加到最后一行即可(不带引号)。 4. 在命令行窗口执行“ipconfig /flushdns”刷新本地缓存。