
参考一些外国的demo,做了3个effect,分享之。
随机坐标创建50个3D矩形
for(var i:int = 0; i < 50; i ++)

{
var p:Plane = new Plane(new ColorMaterial(Math.random()*0xFFFFFF), Math.random()*180+10, Math.random()*180+10);
p.x = Math.random() * 1000 - 500;
p.y = Math.random() * 1000 - 500;
p.z = Math.random() * 700 - 400;
p.material.doubleSided = true;
scene.addChild(p);
p.useOwnContainer = true;
planes.push(p);
depthDemo = true;
p.filters = [new BlurFilter()];
p.alpha = Math.random() + 0.1;
}
为每个矩形创建Blur效果
if(depthDemo)

{
for each(var do3d:DisplayObject3D in planes)

{
if(do3d.container)
var deph:int = int(do3d.container.screenDepth);
do3d.filters[0].blurX = do3d.filters[0].blurY = int(deph * 0.005);
}
}
创建一个3D球体
var s:Sphere = new Sphere(new WireframeMaterial(), 150, 12, 8);
s.name = "sphere 11";
scene.addChild(s);
创建一个特效层
var bfx:BitmapEffectLayer = new BitmapEffectLayer(viewport, 500, 500);
viewport.containerSprite.addLayer(bfx);
把球体加入这个特效层,并为层定义特效
bfx.addDisplayObject3D(s);
bfx.addEffect(new BitmapLayerEffect(new BlurFilter(2, 2, 8)));
bfx.setScroll(0, -4);
bfx.setTracking(s);
光照效果在前面的文章已提供源码,请参阅。
Preview:
http://niuniuzhu.cn/p/3DRenderDemo/index.html
[新闻]康盛 Manyou 开放平台 (MYOP) 体验版上线文章来源:
http://www.cnblogs.com/niuniuzhu/archive/2008/07/08/1237845.html
2.0版为我们提供了六个光影效果类:
GouraudMaterial
PhongMaterial
CellMaterial
FlatShadeMaterial
EnvMapMaterial
EnvMapShader
其中尝试了GouraudMaterial,创建代码如下:
var light:PointLight3D = new PointLight3D(true);
var m:GouraudMaterial = new GouraudMaterial(light, 0x000000, 0x006699);
由于这些类都继承了
MaterialObject3D,可以直接创建3D对象了。
var ball:Sphere = new Sphere(m, 30, 16, 12);
这就创建了一个半径30,颜色从白色过渡到深蓝色的球体了。
Preview:
http://niuniuzhu.9lzy.cn/3dTest/test3D_2.htmlSource:
http://niuniuzhu.9lzy.cn/3dTest/srcview/index.html
[新闻]李开复:中文搜索是谷歌战略核心文章来源:
http://www.cnblogs.com/niuniuzhu/archive/2008/07/05/1236722.html
PV3D提供了一个
BasicView的类,继承这个类,可以让我们轻易在舞台上创建镜头,3D对象。
public function ThreeDStage(cameraType:String, owner:DisplayObject)

{
super(owner.width, owner.height, false, true, cameraType);

this.camera.focus = 30;
this.camera.zoom = 30;
for (var i:int = 0; i < 40; i ++)

{
var ball:Ball = new Ball(src);
scene.addChild(ball);
}
}
然后添加一个Timer对象,定时执行镜头的移动、旋转。
timer = new Timer(4000, 0);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
在这个监听函数里面,我们使用TweenLite类来移动和旋转镜头。

TweenLite.goto(this.camera, 2.5,
{x:360 - Math.round(Math.random() * 720),
y:200 - Math.round(Math.random() * 400),
z:200 - Math.round(Math.random() * 400),
rotationX:40 - Math.round(Math.random() * 80),
rotationY:40 - Math.round(Math.random() * 80),
rotationZ:40 - Math.round(Math.random() * 80),
ease:GetEasingFunction.easingFunction(_tweenType).easeOut,
onComplete:_stopRendering});
这样我们的镜头就具备缓动效果了。
顺便说一下,在这个
BasicView类里面,有三个方法,
startRendering()和
stopRendering()和
singleRender()。第一个是开始每帧绘制3D对象,第二个是停止绘制3D对象,第三个是只绘制一次3D对象。
Preview:http://niuniuzhu.9lzy.cn/3dTest/test3D.html
Source:http://niuniuzhu.9lzy.cn/3dTest/srcview/index.html
[新闻]哪一个 Linux 发行版最流行?文章来源:
http://www.cnblogs.com/niuniuzhu/archive/2008/07/04/1235202.html
先感谢朋友们帮忙测试,过程中服务端出现了一次异常导致所有玩家掉线,暂时找不到原因。在本地测试,开了10个人物未发现问题。程序为了加快搜寻速度,所有静态物件和动态物件(角色)都使用一个一维数组来记录ID,这样每次搜寻(用于深度排序、玩家上下线等的遍历)只需要遍历这个一维数组,在获得下标之后,根据这个下标从数组对象中取得整个对象,当然,前提需要整个过程中这个一维数组和这个对象数组的排序保持一致(大概就是这里出现了异常,是服务器和客户端之间出现延时,使得两个数组排序出现了变化,数据差异引发了异常)。今后开放源码后,我会写一下体会和心得,还会写一些用到的算法和方法。今天累了。明天继续吧。
先放一张截图。
最近看了非常多精彩的socket文章,让我获益不少。但依然没法完全解决粘包的问题。
客户端,封包。把数据用一个类封装起来,此数据应该分为三个部分,分别为包头,包身,包尾(这个我没有用到)。其中包头包括了协议类型和数据长度,包身就是数据了。
服务端,拆包。先建立一个固定长度的缓冲区,当数据把这个缓冲区填充后,分析包头,把类型和长度(假设为M)取出。把包身(假设长度为N)截取M字节。如果M =N,则数据包完整。如果M > N,数据包不完整,继续循环接收。如果M<N,有完整数据包,但还有第二个包紧跟其后(粘包)。
摘要: 在Adobe Flash Player升级到9.0.124后,由于安全策略的更改,使得在socket或xmlsocket的应用里,原先如用http方式加载安全策略的手段不能继续使用了,类似此类应用必须使用xmlsocket://方式来提供安全策略。flashplayer的安全策略检测过程如下:
1,首先检测目标服务器的843端口是否提供安全策略
2,如果1没有检测到策略,则检测actionscript是否使用了Security.loadPolicyFile(xmlsocket://) 手段提供安全策略,如果还没检测到,则使用第3步检测
3,检测目标服务器目标端口是否提供安全策略
阅读全文
摘要: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4
阅读全文
摘要: 花几晚时间做了一个简单DEMO。角色的8方向动作实现,A* + 二叉堆的寻路,物体与角色的深度排序(角色绕到物件后面和前面的遮挡问题)。其中的物品和人物排序,还要多谢群里3tion给的一篇参考文章。难度还是集中在A*方面,虽然已经用二叉堆进行了优化,但反应速度还是很一般。今天看了一篇关于A*的分层寻路,鉴于对地图有一定限制,所以先放起来。接下来研究关于暗雷遇敌,和回合制的开发。
Preview:http://cmoron.kki.cn/2dgame/2Dgamedemo.html
阅读全文