Zend Framework是个好东西!!!

今天详细研究了下ZendAMF,才知道Zend Framework不仅仅是ZendAMF这么简单,Zend Framework里面包含了一大包相对独立的组件,ZendAMF只是其中一个。
Zend Framework里面的组件真是五花八门,可以独立使用,也可以相互配合使用,这样就形成了这样一个强大的,并且是可以扩展的开发框架,这可能就是Zend相搞出来的一个公司,和Adobe的合作可能只是其中的一个推广手段。
不要用Flash Builder自带的生成程序了,打开网址:http://framework.zend.com/点上面的那个大大的DownLoad按钮,可以下到最近的版本,现在的版本是1.9,下载“Zend Framework 1.9.2 Full.zip”文件,里面不仅仅包括框架源码,还包括文档(居然还有部分内容是中文的),开发范例什么的。
真是好东西啊,吃透了这个东西,php水平绝对可以大提升。

ZendAMF起步

最近因为看到FlashBuilder对ZendAMF支持得比较好,特地研究了一下。发现这个东东做起东东真是太方便了。
这个东东好处很多,其一:
可以在Flash和PHP间直接传递Object,省却了组织报文的麻烦,省却了接口定义的麻烦,省却了POST、GET等麻烦事。
其二:
提供了一个简单易懂的开发框架,基本上只要写些简单的类就能实现大段大段的功能了。
其三:
Flash里要调用服务器的方法简单方便,基本上只要Call一下就OK了。

FlashBuilder里使用ZendAMF起步很简单,在创建项目时,把“使用的服务器技术”的PHP项选上,程序会自动创建ZendAMF的环境,并且把gateway(ZendAMF的入口文件)都创建好了,还顺便创建了一个Service示例,里面有一些示例代码,一些基本功能的示例,基本上一看就懂。

我在服务器端的代码是这样安排的:
Zend目录:ZendAMF的框架代码
Service目录:服务类所在的目录
inc目录:存放一些服务器端的工具类,以及配置变量
gateway.php:ZendAMF的入口文件

涉及到操作数据库的服务类,可以做一个基类,把对数据库的增删改查操作一些封装,或引用,或组合,都可以。只要结构上清晰就成。
将来在应用中需要配置的一些常量,可以放一个配置文件中,这和做网站是一样的。我是写了一个config.php,里面内容是这样写的:

<?php
//数据库配置字段
define('DB_HOSTNAME','localhost');
define('DB_USER','root');
define('DB_PASSWORD','');
define('DB_DBNAME','mydb');
define('TB_PREFIX','aping_');
?>

FLASH中弹窗口不被拦的方法

在flash中弹出新窗口,被拦,今天又遇到了。
在Flash中直接用navigateToURL();肯定是不行的,一定会被拦掉。
调JS的Window.open()也是不行的。
正确的方法是用JS模拟一个表单,把表单的target设为_blank.是可以成功,经过多种浏览器的试验,均可行。
在网页中放置JS代码

<script type="text/javascript">
function OpenNewWin(url)
{
	var frm=document.createElement("form");
    frm.method="POST";
    frm.target="_blank";
    frm.action=url;
    document.body.appendChild(frm);
    frm.submit();
}
</script>

在FLASH中调JS:ExternalInterface.call(“OpenNewWin”,”网址”);
即可。
如果出现JS错误,查一下Flash所在Object的ID有没有设。

利用SampleDataEvent模拟出的8位机音乐源码示例

最近在国外的一个网站上看到一个示例,只有2K大小的一个swf文件播放出了长达十分钟左右的游戏音乐。很是惊讶。于是仔细研究了下源码,发现是用的fp10中的新功能。在fp10新的API中有个SampleDataEvent的类,结合Sound对象可以播放出动态的音乐。
比如下面这段代码就可以播放出简单的正弦波。在FLEX SDK3.2以上版本,或者Flash CS4中可以测试。

var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void {
    for ( var c:int=0; c<8192; c++ ) {
        event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
        event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
    }
}
 
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator);
mySound.play();

Adobe官方中文手册中关于这个类的介绍:

http://livedocs.adobe.com/flex/3_cn/langref/flash/events/SampleDataEvent.html

下面的是这个牛B的8位机音乐源码:8位机音乐源码下载

CubicVR,一个360度虚拟实景引擎,源码

最近看了那个蒙牛的360度实景网站,很受启发,于是到网上找找相关的资料,有人提供了这个网址。当然看了下,这也是种用六面模拟全景的,有失真的情况。没蒙牛那个用昂贵的实景摄像头拍出来的全景视频、全景照片效果好。

但是用十二张平面照片搞成这样,确实很不容易了。

源文下载件及效果查看地址:http://lab.andre-michelle.com/cubicvr

我在想如何生成这十二张照片,好像是个像绣花那样的细活哦~~