:::: 菜单 ::::
日志类别: Flash\Ria

编写的ANE出现Extension context为null的解决

调用ANE的as代码:

会发现_context总是null,原因是jar的生成过程用的JDK1.7,ane对JDK1.7支持不好。 以前我都是用的1.6所以没注意到。

需要在编译的graddle里设置采用JDK1.6:


3D对象投射到2D视图的几个参数

FOV (Field of view) 视场

操纵FOV属性值,可以使得3D显示对象呈现出近大远小的样子。FOV属性表达的是一个角度,0~180度之间,表示透视投影的力度。数值越大,应用到显示对象上在z轴上的畸变越强。较小的值会使得缩放尺度很小、物体在空间内的先后距离会很微小。较大的值会导致更大的畸变、使物体呈现出更大的移动。最大值为179.99999……度,会得到极度的鱼眼镜头效果。最小值为0.0000……1,0和180都是非法值。

Projection Center 投影中心

投影中心表示的是透视投影的消失点。是一个偏移值,追加在默认注册点也就是舞台左上角(0,0)上。 呈现在观察者越远处的物体,往消失点歪斜,直到最终消失。想象看无穷长的大厅,你放眼望去,会看到墙体的边缘交汇在远处视线尽头的消失点。 如果消失点在舞台中心,大厅的最远处就在中心点消失。默认值通常是舞台中心。如果需要最远景消失在画面右侧,就把投影中心设为舞台的最右侧一点坐标。

Focal length 焦距

焦距表示 原始视图点(0,0,0)和显示对象自身z轴位置两者间的距离。 长的焦距类似长焦距镜头,有一个狭窄的视图、物体间的距离被缩短。短的焦距类似广角镜头,让你得到一个很宽广的视图但是有很大的畸变。中等焦距大约接近人眼看世界。 往往焦距是在透视变换(如物体移动)时动态重计算的,但你可以主动设置它。

默认的透视投影参数

  • FOV: 55
  • perspectiveCenter: stagewidth/2, stageHeight/2
  • focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )

例如:当舞台大小500*500,设置以下值:

  • fieldOfView: 55
  • perspectiveCenter: 250,250
  • focalLength: 480.24554443359375

游戏设计与人的六大需求

我花费了许多时间思考电子游戏,远不止从概念到完工。无论制作还是玩或参与社区讨论,我意识到有些事情我想分享出来。

游戏设计既是有机感性的又是结构理性的,随着我越是与过程和结果打交道,我越意识到,在游戏设计中有些隐藏的核心价值,这些价值紧密联系了人的六大需求。一个游戏越切合这些价值/需求,主观上讲就越是好游戏。

第一关: 大海捞针

你可能知道,有海量的电子游戏在很多平台上发行,数量与日俱增,且每过一天,找到你会喜爱的游戏变得越来越难。例如,在Steam平台上的游戏,按“特色”、“受欢迎”、“新上”和“最近更新”排序。更深入到搜索选项中,会有风格、用户关键词、评级、用户评级和独特功能和分类。这虽然好,但绝对没有好过直接告诉我我会喜爱哪款游戏。最好仔细猜测。

[ 阅读全文 ]


iOS6跳转到原生地图并导航的ANE

cn.flashj.ane.ios.OpenMap是一个iOS上的原生扩展,实现很简单的一件事情:跳转到系统自带的地图,并导航到某地。

提供2个方法:

  • openMap.routeFromSourceToDest(source, dest);
    从source导航到dest。
  • openMap.routeToDest(dest);
    从当前位置导航到dest。

其中,参数source、dest都是cn.flashj.ane.ios.MapItemVO,此类有三个字段:纬度、经度、地名。

使用例子: [ 阅读全文 ]


Adobe AIR打包用到外部sdk的ANE时报错

现象:

我们项目需要用到ANE扫二维码的功能,XCode里用ZBarSDK写好之后发布成ane,adt打包成ipa的时候报错如下:

Packaging failed!
Packaging error message:
Compilation failed while executing : ld64
Packaging output:
ld: warning: ignoring file /var/folders/l5/kql7svqx5j93vwg65tj3pt_c0000gn/T/8e0d5504-ffea-41da-a45b-22cfe260a197/libcn.flashj.ane.ios.QRScan.a, file was built for archive which is not the architecture being linked (armv7): /var/folders/l5/kql7svqx5j93vwg65tj3pt_c0000gn/T/8e0d5504-ffea-41da-a45b-22cfe260a197/libcn.flashj.ane.ios.QRScan.a
Undefined symbols for architecture armv7:
“_QRScanExtInitializer”, referenced from:
_g_com_adobe_air_fre_fmap in extensionglue.o
(maybe you meant: _QRScanExtInitializer_name)
“_QRScanExtFinalizer”, referenced from:
_g_com_adobe_air_fre_fmap in extensionglue.o
(maybe you meant: _QRScanExtFinalizer_name)
ld: symbol(s) not found for architecture armv7

[ 阅读全文 ]



Links about Feathers

Feathers是轻量级,易于定制皮肤和扩展的UI组件(适用于移动设备和桌面)。配合Starling用.

我近期项目用starling开发,时间比较紧,没有自己写一套配合starling的UI,正准备接下来研究一下,既然有现成的方案,就先研究下它好了.

 

 


Unity3D导入fbx丢失贴图

问题:
从3dsMax导出fbx给Unity用,总是会丢失贴图。尽管Unity导入fbx时会自动导入材质球,但是贴图文件都会变成空的,要重新一个一个贴图填进去,真是太浪费时间了。

解决方案:
3dsMax中模型和贴图采用统一命名,贴图文件拷贝到Unity项目中,然后再导入fbx,就会为自动创建的材质找到对应贴图了。



Flash编译Robotlegs的项目导致运行时报错

在Flash IDE里编译使用了robotleges的项目,运行时总是报null(无法访问空对象⋯⋯)的错误。以前一直都只在FDT里编译就没这种问题,我纳闷地把DocumentClass用FDT编译了一下,居然没任何问题。仅仅是在Flash IDE里编译就会运行时报错。分析原因可能是注入失败,因为报错的都是Inject的变量。

最终原因是Flash编译时候忽略了[Inject]这个Metadata导致的。

解决方法
方法1:只要把发布设置里的“发布SWC”打钩,就可以强制Flash编译器让所有Metadata生效。
方法2:增加编译器参数 -keep-as3-metadata+=Inject -keep-as3-metadata+=PostConstruct 。平时用FDT编译之所以不会出这种错误是因为robotlegs的swc已经把参数加进去了。

我prefer方法1。


页面:123456789