flab3d
public class FlabRoom
接口FlabRoom


《Flab3d万能全景开发包》使用非常简单,即使是新人开发者,也能5分钟以内学会使用,制作出高手需要几周才能完成的全景程序。 使用这个开发包的人就等于有能力完成所有的360度浏览项目。 另外,《Flab3d万能全景开发包》会不定期会根据讨论区用户提供的反馈做修正和更新版本,购买原包后均可直接下载更新。

功能:
超便捷的热点加入
读取外部XML文件切换不同相片和默认标记
球体和六面体两种版本,通吃所有情况和贴图
运行效率最优化
各种摄像机操作,操作手感极佳
读取缓冲


建议声明时,使用一个FlabRoom对象,之后既可以建立全景球,也可以建立全景六面体。 代码范例如下:
var fr:FlabRoom=new FlabRoomCube(640, 480, "assets/address.xml",2);

var fr:FlabRoom=new FlabRoomSphere(640,480,"assets/address.xml",2);

当然也可以具体声明为FlabRoomCubeFlabRoomSphere。使用方法没有任何区别。

所有类都在flab3d下,所以import的写法类似下面:
import flab3d.FlabRoom;
import flab3d.FlabRoomCube;
import flab3d.FlabRoomSphere;
.
.
.
等等

所有XML文件和图片都在assets包里。具体图片XML文件和标签XML文件的格式,请参考我们assets包里面的范例文件。



公共属性
  属性Defined by
  allowTag : boolean
[读写] 开启或关闭XML导入的标签显示,是一个布尔变量,true为有标签,false为没有标签。
FlabRoom
  cameraRotation : int
[只读] 获取当前摄像机横方向旋转值。
FlabRoom
  cameraRotationVertical : int
[只读] 获取当前摄像机竖方向旋转值。
FlabRoom
  currentMapId : int
[只读] 当前图片的对应id。
FlabRoom
  zoomFocus : int
[读写]焦点拉近和拉远。由于全景和真实三维场景原理并不一样,无法真的走进和走远,只能通过摄像机的广角度模拟。
FlabRoom
  allowClick : boolean
[读写]控制是否允许用户操作全景
FlabRoom
  allowDraft : boolean
[读写]控制是否允许模糊缩略图先读功能。默认为false
FlabRoom
  allowLens : boolean
[读写]控制是否允许镜头光晕效果。 默认为false
FlabRoom
  frWidth : Number
[读写]动态设置全景播放器宽度
FlabRoom
  frHeight : Number
[读写]动态设置全景播放器高度
FlabRoom
公共方法
  方法Defined by
  
FlabRoomSphere(_getWidth:Number, _getHeight:Number, _getXMLAdress:String = "", _getResolution:int=2,_getCameraInverse:Boolean=false,_get4ArrowAddress:String="assets/arrow4.png")
建立一个球体全景。 全景球需要使用四面鱼眼图片作为贴图。
建议声明一个FlabRoom对象,之后既可以建立全景球,也可以建立全景六面体。 代码范例如下:
var fr:FlabRoom=new FlabRoomCube(640, 480, "assets/address.xml",2);

var fr:FlabRoom=new FlabRoomSphere(640,480,"assets/address.xml",2);
参数3可以为外部xml的地址,也可以直接为内部XML属性数据。
参数4为段数,段数越多扭曲越小,但效率越低。
参数5可让整个全景的鼠标控制反向。 参数6设置3d方向标图片的地址。
FlabRoom
  
loadImageXML(_getXMLAdress:*):void
动态切换XML图片索引文件。 参数可以为外部xml的地址,也可以直接为内部XML属性数据。
FlabRoom
  
updateMap(_getId:int = 0):void
切换指定贴图。图片参数就是XML文件里面 id 的号数,用来控制要切换哪套图片。第一张图id应为0。 如果超过XML里设置的图片最大号,则停留在最后的一张图。
FlabRoom
  
updateMapPlus(_getId:int = 0, _getBackGroundLoadId:int=0):void
和上面的updateMap()同时再后台读取另一张照片。 _getBackGroundLoadId为后台读取的图片id
FlabRoom
  
切换下一张贴图 。
FlabRoom
  
切换上一张贴图 。
FlabRoom
  
loadTagXML(_getXMLAdress:String = ""):void
读取外部XML来设置默认的标签和标签位置。
FlabRoom
  
updateRange(_getMin:Number = 25, _getMax:Number = -25):void
限制摄像机旋转范围。最高能旋转度数:为正数,最大45。 最低能旋转度数:为负数,最小负45。
FlabRoom
  
autoRotate(_getAngel:Number = 1, _getAxis:String = "y"):void
自动旋转。
FlabRoom
  
addDynamicTag(_getId:int, _getSprite:Sprite, _getPitch:Number = 0, _getYaw:Number = 0, _getImageIndex:int = 0):void
动态增加热点或标签。和外部XML标签无关,可以加入任意Sprite作为热点和标签。
FlabRoom
  
zoomIn(_distance:Number = 100, _due:Number = 1):void
直接快速放大到指定大小。
FlabRoom
  
changeTagColor(tagColor:int):void
外部XML文件设置标签的颜色
FlabRoom
  
changeFontColor(fontColor:int):void
外部XML文件设置标签的文字颜色
FlabRoom
  
changeFontSize(fontSize:int):void
外部XML文件设置标签的文字大小
FlabRoom
  
updateHorizontalRange(_getLeft:Number = 0, _getRight:Number = 360):void
限制摄像横向转动的范围。 如果2个参数之差大于360度,则表示没有范围限制。 FIRST_COMPLETE事件后再调用。
FlabRoom
  
setCameraRotation(_getHorizontal:Number, _getVertical:Number,isTween:Boolean = true):void
直接设置摄像机的旋转位置,参数1为横方向度数,参数2为竖方向度数。 参数3为是否有旋转过渡,FIRST_COMPLETE事件后再调用。
FlabRoom
  
setCameraInertia(_getInertia:Number):void
设置摄像机拖动时的惯性,建议0-10. 数值越大镜头滑动越久. FIRST_COMPLETE事件后再调用。
FlabRoom
  
addTVTag(_getSprite:String, getImageId:int, _getSide:String, _getWidth:Number, _getHeight:Number, _getX:Number, _getY:Number):void
直接加载外部flv视频文件作为电视。可添加任意图片,任意位置,任意大小,任意个数。但清注意使用中实际的效率。 FIRST_COMPLETE事件后再调用。
FlabRoom
  
updateIndicator(_getSprite:Sprite, _getXOffset:int = 0, _getYOffset:int = 0):void
用户可以用自制的读取进度条,任意Sprite都可以作为进度条图片。和事件Flab3dEvent.LOAD_PROCESS配合,可以制作任何进度条功能。 FIRST_COMPLETE事件后再调用。
FlabRoom
  
setFourArrow(_getPlane01Visible:Boolean=false,_getPlane02Visible:Boolean=false,_getPlane03Visible:Boolean=false,_getPlane04Visible:Boolean=false,_getHeightOffset:Number=0,_getRotationOffset:Number=0,_getArrowDistance:Number=200,_getArrowScale:Number=1):void
开启3d方向标,方便识别全景的方向,点击哪个方向标可通过POSITION_ARROW事件来侦听。前4个参数分别为4个方向标是否显示。第5个参数是高度的偏差,第6个参数是旋转的偏差,第7个参数是4个方向标互相的距离,第8个参数是方向标的缩放大小。 FIRST_COMPLETE事件后再调用。
FlabRoom
事件
  事件Defined by
  
鼠标点击XML设置的标签时,返回一个CLICK事件。.data参数里含有本标签从XML读取来的信息。
Flab3dEvent
  
鼠标停留在XML设置的标签上时,返回一个OVER事件。.data参数里含有本标签从XML读取来的信息。
Flab3dEvent
  
鼠标移出XML设置的标签外时,返回一个OUT事件。.data参数里含有本标签从XML读取来的信息。
Flab3dEvent
  
第一次读取完成后,会返回一个FIRST_COMPLETE事件
Flab3dEvent
  
loadImageXML读取完成后,会返回一个RELOAD_COMPLETE事件
Flab3dEvent
  
外部设置标签热点的XML文件读取完毕后,会返回一个TAG_COMPLETE事件。
Flab3dEvent
  
每次切换图片时,会反馈一个CHANGE事件。
Flab3dEvent
  
侦听全景每张图的读取进度,用evt.data.bytesTotal和evt.data.bytesLoaded获取
Flab3dEvent
  
侦听目前鼠标点击处的横竖度数坐标,用于开发者确定热点位置. 用evt.data.vertical和evt.data.horizontal获取
Flab3dEvent
  
侦听目前鼠标点击的3d方向标. 用evt.data.id获取,以0为标准,1是0的右方,2是0的左方,3是0的后方。
Flab3dEvent
属性
allowTag 属性
allowTag:Boolean

[读写] 开启或关闭XML导入的标签显示,是一个布尔变量,true为有标签,false为没有标签。
注意:allowTag并不控制用addDynamicTag()动态加入的标签。



cameraRotation 属性
cameraRotation:Number

[只读] 获取当前摄像机横方向旋转值。
适合配合制作二维地图漫步的视野效果。



cameraRotationVertical 属性
cameraRotationVertical:Number

[只读] 获取当前摄像机竖方向旋转值。
适合配合制作二维图的视野效果。



zoomFocus 属性
zoomFocus:Number

[读写]焦点拉近和拉远。由于全景和真实三维场景原理并不一样,无法真的走进和走远,只能通过摄像机的广角度模拟。
注意:如果拉远过度,会使图片像广角镜拍摄一样变形。


allowClick 属性
allowClick:Boolean

[读写]控制是否允许用户操作全景FIRST_COMPLETE事件后再调用。


allowDraft 属性
allowDraft:Boolean

[读写]控制是否允许模糊缩略图先读功能。默认为falseFIRST_COMPLETE事件前调用。


allowLens 属性
allowLens:Boolean

[读写]控制是否允许镜头光晕效果。 默认为falseFIRST_COMPLETE事件后再调用。


事件
CLICK 事件

鼠标点击XML设置的标签时,返回一个CLICK事件。.data参数里含有本标签从XML读取来的信息。
.data是一个Object,它的各属性就是XML定义的节点名,比如Flab3dEvent.data.title, Flab3dEvent.data.content, Flab3dEvent.data.id等等。
侦听方法:.addEventListener(Flab3dEvent.CLICK, 方法);



OVER 事件

鼠标停留在XML设置的标签上时,返回一个OVER事件。.data参数里含有本标签从XML读取来的信息。
.data是一个Object,它的各属性就是XML定义的节点名,比如Flab3dEvent.data.title, Flab3dEvent.data.content, Flab3dEvent.data.id等等。

侦听方法:.addEventListener(Flab3dEvent.OVER, 方法);



OUT 事件

鼠标移出XML设置的标签外时,返回一个OUT事件。.data参数里含有本标签从XML读取来的信息。
.data是一个Object,它的各属性就是XML定义的节点名,比如Flab3dEvent.data.title, Flab3dEvent.data.content, Flab3dEvent.data.id等等。
侦听方法:.addEventListener(Flab3dEvent.OUT, 方法);



FIRST_COMPLETE 事件

第一次读取完成后,会返回一个FIRST_COMPLETE事件
侦听方法:.addEventListener(Flab3dEvent.FIRST_COMPLETE, 方法);

RELOAD_COMPLETE 事件

loadImageXML读取完成后,会返回一个RELOAD_COMPLETE事件
侦听方法:.addEventListener(Flab3dEvent.RELOAD_COMPLETE, 方法);

TAG_COMPLETE 事件

外部设置标签热点的XML文件读取完毕后,会返回一个TAG_COMPLETE事件。
侦听方法:.addEventListener(Flab3dEvent.TAG_COMPLETE, 方法);


CHANGE 事件

每次切换图片时,会反馈一个CHANGE事件。
侦听方法:.addEventListener(Flab3dEvent.CHANGE, 方法);


LOAD_PROCESS 事件

侦听全景每张图的读取进度,用evt.data.bytesTotal和evt.data.bytesLoaded获取
侦听方法:.addEventListener(Flab3dEvent.LOAD_PROCESS, 方法);


CLICK_POSITION 事件

侦听目前鼠标点击处的横竖度数坐标,用于开发者确定热点位置. 用evt.data.vertical和evt.data.horizontal获取竖方向度数和横方向度数.
侦听方法:.addEventListener(Flab3dEvent.CLICK_POSITION, 方法);


CLICK_ARROW 事件

侦听目前鼠标点击的3d方向标. 用evt.data.id获取,以0为标准,1是0的右方,2是0的左方,3是0的后方。
侦听方法:.addEventListener(Flab3dEvent.CLICK_ARROW, 方法);


构造方法
FlabRoomSphere() 构造方法
public function FlabRoomSphere(_getWidth:Number, _getHeight:Number, _getXMLAdress:String = "", _getResolution:int=2)

建立一个球体全景。 全景球需要使用四面鱼眼图片作为贴图。
宽度,高度可以任意设置,如果没有其他界面则用stage的宽和高。如果有其他界面,则按需求设定宽高。
XML文件的格式请参考我们附带的范例XML文件。


建议声明一个FlabRoom对象,之后既可以建立全景球,也可以建立全景六面体。 代码范例如下:

var fr:FlabRoom=new FlabRoomCube(640, 480, "assets/address.xml",2);

var fr:FlabRoom=new FlabRoomSphere(640,480,"assets/address.xml",2);


参数
_getWidth:Number—全景窗口的宽度

_getHeight:Number—全景窗口高度

_getXMLAdress:String— 指定图片信息的外部XML文件的路径

_getResolution:int— 可以设定图片抗扭曲级别,有1,2,3,4级可选,1为最差效果,4为效果最好,但效率会降低

_getCameraInverse:Boolean— 参数5可让整个全景的鼠标控制反向。




方法
updateMap() 方法
public function updateMap(_getId:int = 0):void

切换指定贴图。图片参数就是XML文件里面 id 的号数,用来控制要切换哪套图片。第一张图id应为0。 如果超过XML里设置的图片最大号,则停留在最后的一张图。

参数
_getId:int—就是XML文件里面 id 的号数,从0开始连续的编号



updateMapPlus() 方法
public function updateMapPlus(_getId:int = 0, _getBackGroundLoadId:int=0):void

和上面的updateMap()同时再后台读取另一张照片。 _getBackGroundLoadId为后台读取的图片id。建议不要和模糊读图(allowDraft=true)一起使用。

参数
_getId:int—目前需要读取的图片id。如果前次已经为后台读取好的图片,则一瞬间就可以替换图片成功。建议不要和模糊读图一起使用。 id为xml文件中设定
_getBackGroundLoadId:int— 需要后台读取的图片id。 id为xml文件中设定



updateNextMap ()方法  
public function updateNextMap():void

切换下一张贴图


updateLastMap ()方法  
public function updateLastMap():void

切换上一张贴图

 

loadTagXML ()方法  
public function loadTagXML(_getXMLAdress:String = ""):void

读取外部XML来设置默认的标签和标签位置。


参数
_getXMLAdress— 外部设置标签的XML文件的路径



updateRange ()方法  
public function updateRange(_getMin:Number = 25, _getMax:Number = -25):void

限制摄像机旋转范围。
最高能旋转度数:为正数,最大45。 最低能旋转度数:为负数,最小负45

参数
_getMin:Number— 最低能旋转度数:为负数,最小负45.

_getMax:Number—最高能旋转度数:为正数,最大45




autoRotate ()方法  
public function autoRotate(_getAngel:Number = 1, _getAxis:String = "y"):void

摄像机自动横向或则纵向旋转。第一个角度参数设为0,就可终止自动旋转。
旋转轴只能为"x",即纵向转动; 或“y”,即横向转动。

参数
_getAngel:Number—每帧旋转的角度,用以控制旋转的速度。
 
_getAxis:String— 绕旋转的轴,只能为"x"(纵向转动)或“y”(横向转动)


addDynamicTag ()方法  
public function addDynamicTag(_getId:int, _getSprite:Sprite, _getPitch:Number = 0, _getYaw:Number = 0, _getImageIndex:int = 0):void

动态增加热点或标签。和外部XML标签无关,可以加入任意Sprite作为热点和标签。

参数
_getId:int —— 标签的编号。从0开始,必须为唯一并连续。

_getSprite:Sprite—— 要被用做标签的Sprite, 任意Sprite都可。

_getPitch:Number——标签在全景的竖方向的度数,尝试几次可知道定位的要领

_getYaw:Number—— 标签在全景的横方向的度数,尝试几次可知道定位的要领

_getImageIndex:int—— 表明标签属于哪张图片的图片id号



 

zoomIn ()方法  
public function zoomIn(_distance:Number = 100, _due:Number = 1):void

拉近距离默认设置为100,您可以任意调整这个参数拉近到你需要的地方,会自动生成过渡。您可以调节过渡的时间。
如果这个不是你需要的,也可以尝试加减zoomFocus属性。
注意:图片本身不大的时候,拉太近会质量会不佳。

参数
_distance:Number— 需要拉近的总距离

_due:Number— 拉近设置距离的过渡时间,单位为“秒”。

changeTagColor ()方法  
public function changeTagColor(tagColor:int):void

外部XML文件设置标签的颜色
注意:这里标签不是addDynamicTag()的标签。

参数
tagColor:int— 标签的背景颜色


changeFontColor ()方法  
public function changeFontColor(fontColor:int):void

外部XML文件设置标签的文字颜色
注意:这里标签不是addDynamicTag()的标签。

参数
fontColor:int—标签的文字颜色


changeFontSize ()方法  
public function changeFontSize(fontSize:int):void

外部XML文件设置标签的文字大小
注意:这里标签不是addDynamicTag()的标签。

参数
fontSize:int—标签的文字大小


updateHorizontalRange ()方法  
public function updateHorizontalRange(_getLeft:Number = 0, _getRight:Number = 360):void

限制摄像横向转动的范围。 如果2个参数之差大于360度,则表示没有范围限制
注意:FIRST_COMPLETE事件后再调用。

参数
_getLeft:Number—逆时针最大能转到的度数
_getRight:Number—顺时针最大能转到的度数
setCameraRotation ()方法  
public function setCameraRotation(_getHorizontal:Number, _getVertical:Number,isTween:Boolean = true):void

直接设置摄像机的旋转位置,参数1为横方向度数,参数2为竖方向度数,参数3为旋转是否过渡。
注意:FIRST_COMPLETE事件后再调用。

参数
_getHorizontal:Number—横方向的度数
_getVertical:Number—竖方向的度数
isTween:Boolean—旋转是否过渡


setCameraInertia ()方法  
public function setCameraInertia(_getInertia:Number):void

设置摄像机拖动时的惯性,建议0-10. 数值越大镜头滑动越久。
注意:FIRST_COMPLETE事件后再调用。

参数
_getInertia:Number—设置摄像机拖动时的惯性,建议0-10


addTVTag ()方法  
public function addTVTag(_getSprite:String, getImageId:int, _getSide:String, _getWidth:Number, _getHeight:Number, _getX:Number, _getY:Number):void

直接加载外部flv视频文件作为电视。可添加任意图片,任意位置,任意大小,任意个数。但清注意使用中实际的效率。
注意:FIRST_COMPLETE事件后再调用。

参数
_getSprite:String—字符串,flv视频文件的地址。可为网络URL,但注意沙箱权限问题。
getImageId—本电视属于哪组图片id, id问XML文件中的id
_getWidth:Number—电视宽度,从0-1的小数,1为整个墙体宽度
_getHeight:Number—电视高度,从0-1的小数,1为整个墙体宽度
_getX:Number—从0-1的小数,表示位置X占墙宽的比例。1为最左
_getY:Number—从0-1的小数,表示位置Y占墙高的比例。1为最下


updateIndicator ()方法  
public function updateIndicator(_getSprite:Sprite, _getXOffset:int, _getYOffset:int):void

用户可以用自制的读取进度条,任意Sprite都可以作为进度条图片。和事件Flab3dEvent.LOAD_PROCESS配合,可以制作任何进度条功能。 FIRST_COMPLETE事件后再调用

参数
_getSprite:String—作为自制进度条加入的sprite
_getXOffset:int—以中心的为准的x方向偏离度
_getYOffset:int—以中心的为准的y方向偏离度


setFourArrow ()方法  
public function setFourArrow(_getPlane01Visible:Boolean=false,_getPlane02Visible:Boolean=false,_getPlane03Visible:Boolean=false,_getPlane04Visible:Boolean=false,_getHeightOffset:Number=0,_getRotationOffset:Number=0,_getArrowDistance:Number=200,_getArrowScale:Number=1):void

开启3d方向标,方便识别全景的方向,点击哪个方向标可通过POSITION_ARROW事件来侦听。前4个参数分别为4个方向标是否显示。第5个参数是高度的偏差,第6个参数是旋转的偏差,第7个参数是4个方向标互相的距离,第8个参数是方向标的缩放大小。 FIRST_COMPLETE事件后再调用。

参数
_getPlane01Visible:Boolean—前方向标是否显示
_getPlane02Visible:Boolean—右方向标是否显示
_getPlane03Visible:Boolean—左方向标是否显示
_getPlane04Visible:Boolean—后方向标是否显示
_getHeightOffset:Number—方向标的高度偏移,相对于一开始的高度,正是向上,负是向下。
_getRotationOffset:Number—方向标的角度偏移,相对于一开始的角度,单位为度数,正负都可。
_getArrowDistance:Number—方向标互相之间的距离
_getArrowScale:Number—方向标的缩放大小