as3实现服务器的putLong()和getLong()
public function getLong():Number{
var h:Number = this.readUnsignedInt();
var l:Number = this.readUnsignedInt();
var num:Number = 0;
switch(this.endian){
case Endian.BIG_ENDIAN:
num= h * Math.pow(2, 32) + l;
break;
case Endian.LITTLE_ENDIAN:
num= l * Math.pow(2, 32) + h;
break;
}
return num;
}
public function putLong(num:Number):void{
var h:Number,l:Number;
if(num<Math.pow(2,32)){
h = 0;l=num;
}else{
h = int(num/Math.pow(2,32));
l = num - h*Math.pow(2,32);
}
switch(this.endian){
case Endian.BIG_ENDIAN:
this.writeUnsignedInt(h);
this.writeUnsignedInt(l);
break;
case Endian.LITTLE_ENDIAN:
this.writeUnsignedInt(l);
this.writeUnsignedInt(h);
break;
}
}
Starling技术
Mark一下:
http://www.adobe.com/cn/devnet/flashplayer/articles/introducing_Starling.html
http://www.starling-framework.org
IOS运行带AS代码SWF奇怪事件
1,事件是这样的,昨晚在家测试MovieClip在IOS跑起来的性能呢。结果在MovieClip上加了一段Stop代码。然后把FLA编译成SWF文件。
2,在主程序里用Loader进行加载SWF文件并进行显示。
3,编译主程序成SWF,通过ADT打包。运行到IPAD上。竟然奇怪的成功了。带AS代码的MovieClip执行了Stop功能。随后在Stop后面添加了一新语句stop();txt.text = “testonly”;
4,编译,打包成IPA,同步到IPAD成功了。奇怪了。后来发现了一个问题。竟然反射也成功了。不过后来前提是(必须把对应的SWF文件的SWC文件也打包进主程序)
详情见天地会链接地址:http://bbs.9ria.com/thread-106922-1-1.html
AIR3中的Native Extension(IOS)
最近天地会论坛及官网Lab里很多人都在讨论AIR3中的Native Extension中的新特性,苦于中文文档比较少,面官方也只是提供了一个教程(全英文的,看起来有点头)。今天周末在家小牛试了一下刀。
更多教程见:
http://bbs.9ria.com/thread-102037-1-1.html
http://bbs.9ria.com/thread-102038-1-1.html
http://bbs.9ria.com/thread-102041-1-1.html
http://bbs.9ria.com/thread-102043-1-1.html
http://bbs.9ria.com/thread-102043-1-1.html
1,第一步,创建.a后缀后的文件,启用Xcode创建一个Cocoa Touch Static Library,如下图

2,创建好项目之后,把AIR3中的SDK里的Include中的FlashRutineExtens.h文件复制到项目中,新建头文件HelloWorld.h跟HelloWorld.m文件.
3,Build项目,复制Products 文件夹下面的后缀名为.a的文件。这里为了文件在后面的Build最后的IPA文件,我把.a文件放在AIr3的SDK的Bin目录下。 重命名为:HelloWorldExtension.a .创建extension.xml文件,内容如下:
<extension xmlns="http://ns.adobe.com/air/extension/2.5">
<id>com.coolexp.HelloWorld</id>
<versionNumber>1.0.0</versionNumber>
<platforms>
<platform name="iPhone-ARM">
<applicationDeployment>
<nativeLibrary>HelloWorldExtension.a</nativeLibrary>
<initializer>ExtInitializer</initializer>
<finalizer>ExtFinalizer</finalizer>
</applicationDeployment>
</platform>
</platforms>
</extension>
4,启动Flash Builder(添加AIR3.0的SDK,后面创建的项目都要用3.0的SDK),创建一个名为HelloWorld的Flex Library的项目,创建HelloWorldUtil类文件,内容如下:
package com.coolexp
{
import flash.external.ExtensionContext;
public class HelloWorldUtil
{
private var context:ExtensionContext;
public function HelloWorldUtil()
{
context = ExtensionContext.createExtensionContext("com.coolexp.HelloWorld","type");
}
public function getHelloWorldWorld():String{
return context.call("GetHelloWorld") as String;
}
}
}
5,Build项目,把HelloWorld.swc复制出来。提取其中的library.swf文件,把HelloWorld.swc,Library.swf,extension.xml也放到AIR3中的SDK目录下的BIN目录
6.Flash Builder 创建Flex Mobile For IOS的移动项目(GetHelloWorldTest),项目创建好后,在Build Library里添加刚才的Library项目,测试代码:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView">
<fx:Script>
<![CDATA[
import com.coolexp.HelloWorldUtil;
protected function button1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
statusTxt.text = "Starting";
try{
var g:HelloWorldUtil = new HelloWorldUtil();
statusTxt.text = g.getHelloWorldWorld();
}catch(e:Error){
statusTxt.text = e.toString();
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button x="17" y="11" click="button1_clickHandler(event)" label="getStr"/>
<s:TextArea id="statusTxt" text="test..." x="7" y="147" height="161"/>
<s:Button x="185" y="11" label="Button"/>
</s:View>
7,Build Flash Mobile项目,复制Bin-Debug目录下的GetHelloWorldTest.swf文件跟GetHelloWorldTest-app.xml文件到Air3的SDK目录中的BIN目录。在GetHelloWorldTest-app.xml中的Application节点添加如下内容:
<extensions> <extensionID>com.coolexp.HelloWorld</extensionID> </extensions>
8,好,下面开始编译,首先Build我们要用的Extension文件。ane文件。打开终端:切换到AIR3的SDK目录BIN,输入如下命令(不要包含引号):
” ./adt -package -target ane HelloWorld.ane extension.xml -swc HelloWorld.swc -platform iPhone-ARM library.swf HelloWorldExtension.a ”
用压缩文件解压你的ANE文件看看。是不是这样的结构啊:
mimetype
META-INF/
ANE/
extension.xml
iPhone-ARM/
library.swf
libextension.a
开始编译最后的IPA文件(当然你得有开发Apple的证书文件跟mobileprovision文件)
“ ./adt -package -target ipa-app-store -storetype pkcs12 -keystore Iphone_dev_new_flash.p12 -provisioning-profile SloppyProvisioning.mobileprovision GetHelloWorldExt.ipa GetHelloWorldTest-app.xml GetHelloWorldTest.swf -extdir . ”
去做点其他事情吧。过一会,我们的IPA文件就生成,好了。安装到IOS设备上测试一下吧。不知道是我眼花还是怎么了。第一次成功了?后来搞了好长时间就ERROR了。没有办法。睡觉去。头昏。
参考文章:
http://akabana.info/2011/08/11/air-native-extension-10-try-air-for-ios-ane/
http://www.adobe.com/devnet/air/articles/extending-air.html
flash与PHP的二进制通信方法
在不用AmfPHP的前提下,也不用base64的前提下,如何在Flash与PHP进行二进制的通信呢?今天下午没什么鸟事,做一下很多的试验下,可以成功运行了.记录一下,方便查询
Flash端代码:
private function sendData():void{
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = flash.net.URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,completeHandler);
var requestHeader:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");
var request:URLRequest = new URLRequest("http://127.0.0.1/test.php?time="+Number(new Date()));
request.method = flash.net.URLRequestMethod.POST;
request.requestHeaders.push(requestHeader);
var data:ByteArray = new ByteArray();
data.writeByte(12);
data.writeUTF("CNSloppyMan");
var sendData:ByteArray = new ByteArray();
sendData.writeInt(data.length);
sendData.writeBytes(data);
trace(sendData.length);
request.data = sendData;
urlLoader.load(request);
}
private function completeHandler(e:Event):void{
var d:ByteArray = e.target.data as ByteArray;
trace(d.readInt()); //14
trace(d.readByte()); //12
trace(d.readUTF()); //CNSloppyMan
}
PHP端代码(打开注释也可以,这两种方法都可以):
//$hand_in = "php://input"; //$data = file_get_contents($hand_in); $data = $GLOBALS['HTTP_RAW_POST_DATA']; echo ($data);
windows 7下建立Node.js运行环境
1,下载cygwin,地址:http://www.cygwin.com/setup.exe
2,安装cygwin,选择安装组件
Devel 分类
gcc-g++: C++ compiler
gcc-mingw-g++: Mingw32 support headers and libraries for GCC C++
gcc4-g++: G++ subpackage
git: Fast Version Control System – core files
make: The GNU version of the ‘make’ utility
openssl-devel: The OpenSSL development environment
pkg-config: A utility used to retrieve information about installed libraries
zlib-devel: The zlib compression/decompression library (development)
Editor 分类
vim: Vi IMproved – enhanced vi editor
Python 分类
全部
Web 分类
wget: Utility to retrieve files from the WWW via HTTP and FTP
curl: Multi-protocol file transfer command-line tool
下一步之后会提示你有许多相依的组件需要安装,基本上直接按下一步即可。
3,安装cygwin成功后,运行ash.exe
进入C:\cygwin\bin\ 目录中,运行ash.exe,在弹出的命令窗口中执行 ./rebaseall -v 命令, 等命令执行完成执行 exit 退出 ash
4,下载并安装Node.js
运行桌面上的Cygwin程序,在命令窗口中输入 wget http://nodejs.org/dist/node-v0.4.11.tar.gz 回车。
在命令窗口中输入 tar xf node-v0.4.7.tar.gz 回车,node-v0.4.7.tar.gz为你自己下载的版本。
在命令窗口中输入 cd node-v0.4.7 回车。
在命令窗口中输入 ./configure 回车。
在命令窗口中输入 make 回车。
在命令窗口中输入 make install 回车。
ok,到这里你已经安装完成node.js了
5,设置DNS
打开文件夹,进入到C:\cygwin\etc\ 文件夹下。
手动建立 resolv.conf 文件。
用记事本打开刚建立的resolv.conf文件,添加如下
nameserver 8.8.8.8
nameserver 8.8.4.4
保存并关闭。
6,测试Node.js是否可以运行
在某个目录下, 建立 example.js
输入
var http = require(‘http’);
http.createServer(function (request, response) {
response.writeHead(200, {‘Content-Type’: ‘text/html’});
response.end(‘Hello World‘);
}).listen(8888);
console.log(‘Server running at http://127.0.0.1:8888/’);
保存为UTF-8格式
运行cygwin,在命令窗口中输入 node example.js 回车
是否看见了Server running at http://127.0.0.1:8888/
打开浏览器,访问http://127.0.0.1:8888/ 看看是否出现了hello world的页面。
最新Chrome Beta(14)支持在浏览器内直接执行C/C++代码
Google一直在研究一个叫Native Client的东西,可以让Web应用在浏览器内执行编译过的本地代码,现在这个功能已经整合进了Chrome浏览器内。Google在Chrome官方博客中说,最新Beta版的Chrome浏览器(版本14)将支持Native Client,允许在浏览器内执行C/C++代码,就像现在浏览器能够执行JavaScript代码一样。
项目地址在:http://code.google.com/p/nativeclient-sdk/
GClient设置代理的方法
1. run->cmd
2. type “netsh”
3. type “winhttp”
4. type ” set proxy proxy-server=”http=myproxy:port” ”
GoogleMap不能在IOS运行显示的解决方案
Flash开发移动平台上的地图,我们如果调用了Googlemap,由于Apple的限制,在IOS上是显示不出来的。怎么办呢?Google一了下,找到了解决方案。
记录下来。作个备份。
详细的信息在:http://devblog.mapquest.com/2011/07/26/flash-maps-api-on-your-mobile-device/


