当用Loader从外部加载swf时,加载完成时候,读取Loader对象的宽高,得到的是包含swf内所有可视元件的最小矩形的宽高。可能是因为Loader也是继承的DisplayObject,所以Loader的宽高属性和其他DisplayObject的宽高属性是一样的。
那么如何能获取到此swf原来舞台的宽高呢?
答案是,可以用LoaderInfo来读取。LoaderInfo的宽高属性就是swf舞台的宽高。
当用Loader从外部加载swf时,加载完成时候,读取Loader对象的宽高,得到的是包含swf内所有可视元件的最小矩形的宽高。可能是因为Loader也是继承的DisplayObject,所以Loader的宽高属性和其他DisplayObject的宽高属性是一样的。
那么如何能获取到此swf原来舞台的宽高呢?
答案是,可以用LoaderInfo来读取。LoaderInfo的宽高属性就是swf舞台的宽高。
想做个组件,看了半天都没看懂怎么做,太麻烦了。先把教程保存下来,有空翻翻。
创建Flash CS3组件(一) 建立组件 (CYJB, 2008-8-05)
1、c++中使用json:
1)C++的Json解析库:jsoncpp和boost .:http://www.cnblogs.com/lidabo/archive/2012/10/31/2748026.html
1、android Json解析详解(详细代码):http://blog.csdn.net/onlyonecoder/article/details/8490924
2、Android获取webView快照与屏幕截屏的方法:http://www.2cto.com/kf/201302/187492.html
flash提供的air for desktop可以开发桌面应用,flash本身不能实现的功能可以通过ane来完成。也就是说,可以直接用flash做windows应用程序。
目前公司实际项目中几乎都会有的功能:全屏且置顶、3d显示(用ogre)、硬件交互。
全屏且置顶air本身可以实现;其余两种功能都是flash本身不能实现的,硬件交互可以用ane来实现;3d显示用ane估计是不行,用flasCC应该可以,不过不会用,而且效果效率都不好说。
我在想是否可以通过运行两个exe程序来实现,一个用air来实现,显示操作界面,3d用c++来做,通过ane中的dll文件来实现交互。
问题描述:启动时,先显示一下,然后黑屏,再重新显示画面。
原因(来自网友):在有的android 上 调用NetStream.play() 时候 会黑一下;第一次new Video会导致整个AIR黑屏1-2秒,这个bug在很多的air版本出现。
解决方法:在程序的主类初始化函数创建一个Video,存储起来(静态,类属性都可以),AIR程序背景设置成黑色来掩盖这个bug。缺点:启动会迟个1秒左右。
利用jni,可以在安卓中使用c/c++编写的程序,还可以使用ogre。
c/c++编写的程序会被打包成.so文件,air for android除了可以使用ane,也可以使用.so文件,这样就可以使用ogre了。
具体实现比较困难,需要会在air中使用ane、so,安卓中使用ogre(这个最难,好在有现成的demo)。然后组合起来就行了。安卓中使用ogre本身就存在各种兼容性问题,而且ogre初始化比较慢,所以慎用。
方法1:flash提供的air for android可以直接发布成apk,flash本身实现不了的功能,通过ane来实现。
方法2:参考 Java ADT 打包AIR ,原生java通过air运行时来加载swf。
个人感觉效果上两种方法没有区别,第二种方法调试起来比较方便。
我们用做游戏的时候,舞台的宽高是固定的,这样我们才能专心来实现游戏的逻辑,游戏做好了之后,要放到不同的设备上运行,要面对各种分辨率,还要面对手机的屏幕旋转,游戏主舞台宽高是固定的,适应屏幕无非就是控制舞台的缩放和位移。
缩放以适应屏幕大小效果不好,做游戏很少会用;按宽或者按高等比缩放也不太实用;常用的就是等比缩放并居中。其实无论哪种方式,原理都是一样的。
好多引擎都提供了响应的方法来实现屏幕适配,是的我们可以专注做游戏。createjs没有深入研究,不知道有没有。
flasCC,不是flash CC。最开始是Alchemy(传说中的炼金术),可以把c,c++代码编译成swf直接发布到网上,或者编译成swc供as调用。
天地会论坛关于flasCC的专题:http://wiki.9ria.com/FlasCC(Flash_C%2B%2B_Compiler
第一次使用总结: