Flex 与Stage3D 的备忘录

Flex的List组件的ItemRender的一些属性

1.userList.dataGroup.getChildAt(i) as ItemRenderer //List访问ItemRenderer(不符合MVC分离,不建议使用)

2.userList.dataGroup.numChildren //List内的ItemRendere个数

3.itemRenderer.owner //ItemRenderer访问提供data的父组件

FlashBuilder建立ActionScript项目并使用stage3D时, 如果报错:

Error #2044: Unhandled ErrorEvent:. text=Error #3702: Context3D not available.

则将app.xml中的下两个参数修改如下:

<renderMode>direct</renderMode>

<depthAndStencil>true</depthAndStencil>

FlashIDE对位图使用九宫格scale9

FlashIDE不能直接对位图应用九宫格(没有效果)

需要:

  1. 将位图转换为影片剪辑元件
  2. 将位图打散/分离(breakapart)
  3. 调整好九宫格分割线
  4. 将被划分出的9块图形分别选中, 并修改-组合(Ctrl-G)

进行完以上步骤后, 再在flashIDE中缩放该元件, 就可以看到九宫格缩放效果了

AS3 库项目 内部命名空间 库内才可访问的方法属性

通过在库项目中添加命名空间, 并用该命名空间表示特定的属性,方法可以使在库外无法访问这些属性和方法.

从而保持API的精简性.

示例:

1.新建inner.as的as文件,并写入

package XXX

{public namespace inner;}

2.在库中不希望被外部访问的属性方法前,用inner修饰符, 例:

arcane var _innerValue:Object;//库外部无法访问, 只能在库内调用

private var _privateValue:Object;//库外可以访问

public var _publicValue:Object;//库外可以访问

原注释:

The namespace used to enclose properties and methods that should only be available within the Away3D library. This keeps the public API clean and prevents the calling of methods that should never be called manually.

Stage3D性能限制

转载于http://riaoo.com/?p=2556

  • AGAL 限制:每个程序 200 个 opcode
  • 绘制调用限制:每个 Context3D.present() 调用 32768 个 drawTriangles() 调用
  • Context3D.createIndexBuffer() 单个缓冲区中的最大索引数为 524287
  • Context3D.createVertexBuffer() 单个缓冲区中的最大顶点数为 65535
  • Context3D.createTexture()和Context3D.createCubeTexture()的参数streamingLevels的最大值是 log2(min(width,height))
  • Context3D.configureBackBuffer() 缓冲区的最小大小为 50×50 像素
  • IndexBuffer3D 索引为 16 位无符号整数,即所允许的最大索引值为 65535 (0xffff)
  • Program3D.upload() 两个参数都必须为Endian.LITTLE_ENDIAN (:程序会在每次调用 Context3D.drawTriangles() 方法时运行顶点着色程序和片段着色程序。顶点程序会为要绘制的三角形列表中的每个顶点执行一次。片段程序会为三角形表面的每个像素执行一次)
  • Context3D.setVertexBufferAt() 顶点着色器所使用数据的最小单位为 32 位数据。距顶点流的偏移量以 32 位的倍数指定(:GPU的寄存器被设计为128位,也就是32+32+32+32,即一个寄存器最多能放4个Number。)
  • VertexBuffer3D 最多可以为每个点提供 64 个 32 位值(256 字节)数据(但在这种情况下,单个顶点着色器无法使用所有数据。Y.Boy注:因为顶点寄存器最大数量才8个,每个是32位,总共才32字节)。即:uploadFromVector() 方法的参数numVertices最大值可以为64。
  • 资源限制
  • 寄存器数量限制

TweenMax的详细资料

http://blog.5d.cn/user12/dzxz/200809/500547.html

对 MovieClip 进行连续的缓动,先用2秒钟时间让透明度降到 50%,然后用1秒钟时间滑落到 y 坐标为300的位置,使用如下的代码:
 
  import gs.TweenMax;
  TweenMax.sequence(clip_mc, [{time:2, alpha:0.5}, {time:1, y:300}]);
 
 使用 Back.easeOut 函数对影片剪辑 clip_mc 进行缓动,缓动持续 5 秒钟,alpha 值变到 0.5,x 坐标变到 120,延迟 2 秒钟执行,缓动结束后,调用“onFinishTweenusing”,并且为这个函数传递几个参数(数值 5 和 对 clip_mc 的引用),代码如下:
  
  import gs.TweenMax;
  import fl.motion.easing.Back;
  TweenMax.to(clip_mc, 5, {alpha:0.5, x:120, ease:Back.easeOut, delay:2, onComplete:onFinishTween, onCompleteParams:[5, clip_mc]});
  function onFinishTween(argument1:Number, argument2:MovieClip):void {
   trace("The tween has finished! argument1 = " + argument1 + ", and argument2 = " + argument2);
  }
 
 如果舞台上的影片剪辑已经处于期望的缓动结束时位置,而你希望它从其它位置用 5 秒钟的时间回到当前位置,(比如从比当前位置高 100 像素或屏幕外更高的地方,通过改变 y 属性,下落到当前位置)可以使用下面的代码:
  
  import gs.TweenMax;
  import fl.motion.easing.Elastic;
  TweenMax.from(clip_mc, 5, {y:"-100", ease:Elastic.easeOut});

FlashBuilder4.7 与 depthAndStencil

Fb4.7自带的4.6.0版本的sdk的air版本只有3.1, 所以创建的Flex项目的app.xml里面是没有depthAndStencil.

这样会使得Flex手机项目的stage3D场景无法使用深度排序, 表现为模型前后透视错乱.

而这一BUG在模拟器上无法看到, 只有真机测试时才会出现此情况.

只有将Flex sdk升级到更高版本, 也就是apache flex sdk的任一版本, 才能解决这一问题.

AIR 预加载画面

splashScreenImage预加载画面属性

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" splashScreenImage="@Embed(‘assets/all/startUp.jpg‘)"/>

Flex List 布局(依次排列-纵向)


1

2

3

4

5

<s:List id="mylist">

    <s:layout>

        <s:TileLayout requestedColumnCount="10" columnWidth="200" rowHeight="220" horizontalGap="10" verticalGap="10"/>

    </s:layout>

</s:List>

Adobe Air程序如何定义 某格式文件的默认打开程序

对于文件关联管理,air中的flash.desktop.NativeApplication类提供了4个方法:

isSetAsDefaultApplication(extension:String):Boolean
返回当前AIR应用程序是否是指定文件格式的默认打开方式
参数extension是文件扩展名字符串,不用写”.”,比如”flv”,下面3条的extension一样

setAsDefaultApplication(extension:String):void
使当前应用程序与某种文件格式关联

removeAsDefaultApplication(extension:String):void
移除某个AIR应用程序与文件之间的关联

getDefaultApplication(extension:String):String
报告某个文件所关联的应用程序路径
返回应用程序路径的字符串

文件关联必须要在应用描述文件中声明。当AIR应用程序安装时,运行环境会自动关联相应文件,设置相应格式的文件默认打开方式为你的AIR应用程序。不过,因为AIR安装程序不覆盖任何文件关联,所以已经有别的程序设置为默认打开方式的文件格式是不处理的。
有个良好的习惯做法是:在程序启动时核实你所希望关联的文件格式,也就是核实是否已设置默认打开方式为用该AIR应用程序。毕竟AIR应用程序不覆盖已存在的文件关联,而且别的应用程序可能将你的文件关联修改。如果遇到别的安装程序关联了你需要关联的文件,可以使用setAsDefaultApplication()设置关联,不过最好先得到用户的同意哦.
需要注意的是,AIR只允许管理在应用描述文件中声明了扩展名的文件关联,所以,我们是无法获取未声明的文件类型的关联信息的,而且对所有未声明的扩展名做操作都会导致抛出程序异常。
在应用描述文件中声明文件关联的元素结构如下:

<fileTypes>
<fileType>
<name>adobe.VideoFile</name>
<extension>avf</extension>
<description>Adobe Video File</description>
<contentType>application/vnd.adobe.video-file</contentType>
<icon>
<image16×16>icons/AIRApp_16.png</image16×16>
<image32×32>icons/AIRApp_32.png</image32×32>
<image48×48>icons/AIRApp_48.png</image48×48>
<image128×128>icons/AIRApp_128.png</image128×128>
</icon>
</fileType>
</fileTypes>

要用NativeApplication.nativeApplication侦听InvokeEvent事件,具体使用方法在Adobe Air开发文档的第20章:Air应用程序的调用和终止 有详细介绍,开发文档下载地址:http://help.adobe.com/zh_CN/AIR/1.1/devappshtml/devappshtml.pdf

Flare3D中多组件模型靠近镜头时, 部分组件消失的解决办法


1

2

3

4

5

6

__content.forEach(

    function setBounds(m:Mesh3D):void

    {

        m.bounds = null;

    },

Mesh3D);

Flare3D中, 绕Y轴旋转的角度处理


1

2

3

4

var tarP:Point = new Point(tx - fx, ty - fy);//方向

var rot:Number = Math.atan2(tarP.y, - tarP.x)/Math.PI * 180;//注意符号

rot += 90;

_content.setRotation(0, rot, 0);

Flex组件自定义事件

AS文件:

[Event(name="myEnableEvent", type="flash.events.Event")] 
public class MyComponent extends UIComponent 

    ... 
}

MXML文件:

<fx:Metadata> 
    [Event(name="myEnableEvent", type="flash.events.Event")] 
</fx:Metadata>

时间: 2024-09-29 23:01:07

Flex 与Stage3D 的备忘录的相关文章

Flex 4 项目经验备忘录 - 1

1.全屏.缩放模式和对齐选项的设置 在主Application中获取stage 要使用[this.]systemManager.stage,而不是[this.]stage,因为在Application的initialize和creationComplete事件处理函数中,Application的stage都为null! 设置全屏 可以在Application的creationComplete事件处理函数中,设置 systemManager.stage.displayState=StageDisp

利用Flare3D和Stage3D创建3D

Flare3D 是一款功能强大的引擎,它使得 Flash 中的 3D 内容管理变得更为简便. 它的设计宗旨是提供一个完美的开发工作流程,以便你能够获得事半功倍的效果. 本教程侧重讨论在 Flash 中创建 3D 游戏所需的 ActionScript 代码:但本范例项目不包括创建和导出游戏组件文件的过程. 在完成本教程之后,你将了解在Flash中开发一个完整 3D 游戏所需的基本概念. 在本范例中,你将使用 Stage3D 和 Flare3D 处理用于创建一个名称为 Yellow Planet 的

Java设计模式应用——备忘录模式

备忘录模式主要用于存档.游戏中我们打boss前总会存档,如果打boss失败,则读取存档,重新挑战boss. 可以看出来,备忘录模式一般包括如下数据结构 1. 存档文件:用于恢复备份场景的必要数据: 2. 存档管理器:用于管理存档,包括存档的读写与展示: 3. 被存档的对象. 下面以射击游戏的存档来举例: 1. 射击选手 package com.coshaho.learn.memorandum; // 射击手 public class Shooter { // 血量 private int blo

css3 flex盒子布局

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } .nav{ display: -webkit-flex; background-color: lightgreen; height: 100px

flex布局

一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. .box{ display: flex; } 行内元素也可以使用Flex布局. .box{ display: inline-flex; } Webkit内核的浏览器,必须加上-webkit前缀. .box{ display: -webkit-flex; /* Safari */ display: flex; } 注意,设为Fle

Swift备忘录

Swift 备忘录 2015-4 一.简介 1.Swift 语言由苹果公司在2010年7月开始设计,在 2014 年6月推出,在 2015 年 12 月 3 日开源 2.特点(官方): (1)苹果宣称 Swift 的特点是:快速.现代.安全.互动,而且明显优于 Objective-C 语言 (2)可以使用现有的 Cocoa 和 Cocoa Touch 框架 (3)Swift 取消了 Objective-C 的指针及其他不安全访问的使用 (4)舍弃 Objective-C 早期应用 Smallta

JAVA设计模式(20):行为型-备忘录模式(Memento)

场景 录入大批人员资料.正在录入当前人资料时,发现上一个人录错了,此时需要恢复上一个人的资料,再进行修改. word文档编辑时,忽然电脑死机或断电,再打开时,可以看到word提示恢复到以前的文档. 管理系统中,公文撤回功能.公文发出去后,想撤回来. 核心 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态. 结构 源发器类Originator 备忘录类Memento 负责人类CateTaker 开发中常见的应用场景 棋类游戏中的,悔棋 普通软件中的,撤销操作 数据库软件中的,

Java设计模式(十) 备忘录模式 状态模式

(十九)备忘录模式 备忘录模式目的是保存一个对象的某个状态,在适当的时候恢复这个对象. class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } class Storage

Linux中tomcat开机启动配置脚本【参考其他文章的总结备忘录】

参考文章http://blog.sina.com.cn/s/blog_a57562c80101ic47.html http://blog.csdn.net/cheng168520/article/details/4312828 http://blog.sina.com.cn/s/blog_7f395ece0100ti5y.html 以前在自己本机上安装过一个Linux,后台应为系统崩溃,以前配置的开机启动脚本.数据库主从双备份.负载均衡等都没了,所以现在在重新配置一次,赶紧做个笔记防止自己以后又