| 包 | 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);
当然也可以具体声明为FlabRoomCube,FlabRoomSphere。使用方法没有任何区别。
所有类都在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)建立一个球体全景。 全景球需要使用四面鱼眼图片作为贴图。
建议声明一个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属性数据。 | 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 | ||
|
updateNextMap():void
切换下一张贴图 。
| FlabRoom | ||
|
updateLastMap():void
切换上一张贴图 。
| 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 | ||
| 事件 | 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 | ||
| 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
[读写]控制是否允许模糊缩略图先读功能。默认为false。FIRST_COMPLETE事件前调用。
| allowLens | 属性 |
allowLens:Boolean
[读写]控制是否允许镜头光晕效果。 默认为false。FIRST_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, 方法);
| 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为效果最好,但效率会降低 |
| 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方向偏离度 |