2010-10-31

西湖、千岛湖、连云港海鲜城、万华旅业集团网站设计

万华旅业集团

万华旅业集团

连云港墟沟海鲜城

连云港墟沟海鲜城

千岛湖虚拟体验中心

千岛湖虚拟体验中心

杭州西湖

杭州西湖

2010-09-28

非常强悍的3D数独游戏

www.4dsudoku.net/game/

惊叹啊,喜欢玩数独的童鞋去看看

2010-08-29

两个flash全站

发两个最近给一个公司做的flash网站

盛合家装

这是第一个方案,被否定了,所以没有去完善了,稍微等待下,没有loader  ×—×

有兴趣的可以在这里下载

http://www.box.net/shared/25d8os86vn

首页

首页

导航页

diy页面

diy页面

片头太大,所以没放上来,第一个flash网站,小计一下

2010-08-17

AS3如何复制DisplayObject

使用Alternativa3d时想创建个displayobjectMaterial材质(继承自spriteMaterial),找到的一个现成类没有clone函数,查了下displayobject如何复制,这里有个简单的,没有去深究,只是对于我能用。
代码如下

//获取构造函数
var dobjClass:Class = Object(dobj1).constructor;
//创建一个新的displayobject
var dobj2:DisplayObject = new dobjClass();

下面是DisplayobjectMaterial代码,只是不能交互了,这个是alternativa3d引擎本身决定的

package alternativa.engine3d.materials 
{
	import alternativa.engine3d.alternativa3d;
	import alternativa.engine3d.core.*;
	import alternativa.engine3d.display.*;
	import alternativa.engine3d.materials.*;
	import alternativa.types.*;
	import flash.display.DisplayObject;
 
	use namespace alternativa3d
	public class DisplayObjectMaterial extends SpriteMaterial
	{
		private var _dobj:DisplayObject;
 
		public function get dobj ():DisplayObject { return _dobj; }
		public function set dobj (v:DisplayObject):void {
			// remove from skin 1st
			if (_dobj != null)
				if (_dobj.parent as Skin != null)
					_dobj.parent.removeChild (_dobj);
			_dobj = v;
		}
 
		public function DisplayObjectMaterial (displayObject:DisplayObject = null, alpha:Number = 1, blendMode:String = "normal") {
			super (alpha, blendMode); _dobj = displayObject;
		}
 
		private var _pt:Point3D, _s:Point3D = new Point3D;
 
		// TODO handle clipping?
		override alternativa3d function canDraw (camera:Camera3D):Boolean {
			if (_dobj == null) return false;
 
			// global coords of the sprite
			_pt = camera.globalToLocal (sprite.globalCoords);
 
			// in front of camera only, please
			_dobj.visible = (0 < _pt.z); return _dobj.visible;
		}
 
		override alternativa3d function draw (camera:Camera3D, skin:Skin):void {
 
			// do what parent did not
			skin.alpha = _alpha;
			skin.blendMode = _blendMode;
 
			// if _dobj is not in skin yet, add it
			if (skin != _dobj.parent) {
				skin.addChild (_dobj);
			}
 
			// account for scale
			_s.x = sprite.scaleX;
			_s.y = sprite.scaleY;
			_s.z = sprite.scaleZ;
			_s.multiply (0.5773502691896257645 /*1 / Math.sqrt (3)*/);
 
			// place it accordingly
			var zoom:Number = camera.orthographic ? 1 : camera.focalLength / _pt.z;
			_dobj.x = _pt.x * zoom; //_dobj.scaleX = zoom * _s.length;
			_dobj.y = _pt.y * zoom; //_dobj.scaleY = zoom * _s.length;
		}
 
		override public function clone():Material 
		{
			var dm:DisplayObjectMaterial = new DisplayObjectMaterial();
			var objClass:Class = Object(_dobj).constructor;
			var obj:DisplayObject = new objClass();
			dm.dobj = obj;
			return dm;
		}
 
	}
 
}
2010-08-16

Alternativa3d小计:MovieClip材质或者vedio材质原理

其实就是重写texture中的draw函数,使其每隔一段时间用bitmapdata draw一遍movieclip或者vedio

package {
import flash.display.BitmapData;
import flash.events.TimerEvent;
import flash.utils.Timer;
import alternativa.types.Texture;
public class MovieClipTexture extends Texture {
private var clipref:DisplayObject
public function MovieClipTexture (clip:DisplayObject) {
super (new BitmapData (clip.width, clip.height); clipref = clip;
var t:Timer = new Timer (100); t.addEventListener(TimerEvent.TIMER, drawClip); t.start();
}
private function drawClip (e:TimerEvent):void {
bitmapData.draw (clipref);
}
}
}
...
plane.setMaterialToAllSurfaces(new TextureMaterial(new MovieCLipTexture (myClip)));
页面:«12345678...15»