摘要:在定義時的方法中的第三個參數,實際上是文件中元素的內部呈現。但是除了元素的各種屬性意外,還有幾個特殊的屬性和方法在定義時,其中一個接口中的第一個參數,是內部訪問的直接媒介接口對象。數組中的元素也是繼承與,并且額外提供了和屬性。
krpano Plugin Interfacekrpano中有好多object,krpano Plugin Interface, krpano Plugin Object, krpano Base Object, krpano Interface Object, krpano Javascript Interface... 真心覺得官方文檔的組織形式太晦澀了,所以這里整理下
定義krpano plugin的時候需要遵循的接口。
http://krpano.com/docu/plugininterface
定義krpano插件的時候,基本上就是定義一個叫krpanoplugin的function,這個function會在krpano加載插件的時候調用到。
krpanoplugin的方法里,有幾個特殊的地方:
this指向當前的plugin對象
需要按照krpano Plugin Interface,在this下定義并實現幾個方法。registerplugin, unloadplugin必選;onresize可選
registerplugin當krpano要去加載該插件的時候被調用,調用時會傳三個參數:依次是krpano Interface Object, plugin path, krpano Plugin Object
例如:
/* krpano HTML5 Javascript Plugin Example */ function krpanoplugin () { var local = this; // save the "this" pointer from the current plugin object var krpano = null; // the krpano and plugin interface objects var plugin = null; var xml_value = 100.0; // the value for a custom xml attribute // registerplugin - startup point for the plugin (required) // - krpanointerface = krpano interface object // - pluginpath = the fully qualified plugin name (e.g. "plugin[name]") // - pluginobject = the xml plugin object itself local.registerplugin = function (krpanointerface, pluginpath, pluginobject) { // get the krpano interface and the plugin object krpano = krpanointerface; plugin = pluginobject; // first - say hello krpano.trace(1, "hello from plugin[" + plugin.name + "]"); // add plugin attributes plugin.registerattribute("mode", "normal"); plugin.registerattribute("value", xml_value, value_setter, value_getter); // add plugin action (the attribute needs to be lowercase!) plugin.dosomething = action_dosomething; // optionally - add some graphical content: // register the size of the content plugin.registercontentsize(200,200); // use 100% width/height for automatic scaling with the plugin size var text = document.createElement("div"); text.style.cssText = "width:100%;height:100%;"+ "display:flex;color:white;background:rgba(10,50,100,0.5);"+ "align-items:center;justify-content:center;text-align:center;"; text.innerHTML = "HTML5krpano Plugin Object
TEST PLUGIN
click me"; // the plugin "sprite" variable is the internal html element of the plugin plugin.sprite.appendChild(text); } // unloadplugin - exit point for the plugin (optionally) // - will be called from krpano when the plugin will be removed // - everything that was added by the plugin should be removed here local.unloadplugin = function() { plugin = null; krpano = null; } // onresize (optionally) // - width,height = the new size for the plugin // - when not defined then only the krpano plugin html element will be sized local.onresize = function(width,height) { // not used in this example // the plugin content will resize automatically because // of the width=100%, height=100% CSS style return false; } function value_setter(newvalue) { if (newvalue != xml_value) { krpano.trace(1, ""value" will be changed from " + xml_value + " to " + newvalue); xml_value = newvalue; } } function value_getter () { return xml_value; } function action_dosomething () { // trace the given action arguments krpano.trace(1, "dosomething() was called with " + arguments.length + " arguments:"); for (var i=0; i < arguments.length; i++) krpano.trace(1, "arguments[" + i + "]=" + arguments[i]); // trace some infos krpano.trace(1, "mode=" + plugin.mode); krpano.trace(1, "lookat=" + krpano.view.hlookat + " / " + krpano.view.vlookat); // call krpano actions plugin.accuracy = 1; // disable grid fitting for smoother size changes krpano.call("tween(width|height, 500|100)", plugin); krpano.call("lookto(0,0,150); wait(1.0); lookto(90,0,90);"); krpano.call("tween(width|height, 200|200)", plugin); } }
在定義krpano plugin時,其中一個接口registerplugin中的第三個參數,指代plugin對象本身。
http://krpano.com/docu/plugininterface/#plugininterface
在plugin定義時的registerplugin方法中的第三個參數krpano plugin object,實際上是xml文件中
sprite
HTML5 - The HTML
The sprite object can be used for adding custom display elements (DisplayList elements in Flash, HTML DOM elements in HTML5) to the plugin itself.
Note - when using the plugin as hotspot, then the sprite object is only available when rendering the hotspot via CSS3D (see the renderer setting)!
videoDOM
A special attribute to allow the plugin providing a HTML5 video object for rendering.
The krpano viewer will use that video object for rendering when using the plugin as hotspots or as pano image (via url="plugin:video").
Setup: videowidth and videoheight attributes with the size of the video need to be added to plugin object, and once the video is ready for rendering the onvideoreadyCB function of the plugin be called. For all details please see the example source code of the videoplayer plugin.
Special usage: with some tricks it"s also possible to use a HTML5 canvas object as video source. Use the canvas as videoDOM and add these "faked" properties to it: readyState=4, videoWidth=canvas.width, currentTime=time or frame number (should change when the content changes).
registercontentsize(width, height)
Define the "default" size of the plugin display content.
This is the size that will be used when the user hasn"t set the width or height.
updatepos()
Parse the position related settings and update the internal display object of the plugin.
After calling this function the pixelwidth and pixelheight variables will contain the final pixel sizes of the plugin element.
getfullpath()
Returns the xml embedding path/name - e.g. "plugin[name]" or "hotspot[name]".
_assignEvents(htmlelement, mode)
krpano Interface Object在定義krpano plugin時,其中一個接口registerplugin中的第一個參數,是內部訪問krpano的直接媒介(接口對象)。
http://krpano.com/docu/plugininterface/#krpanointerface
這個接口對象提供了訪問整個krpano的所有結構和方法,之外還額外提供了一些方法來做數據訪問,action調用等。
這些額外的方法有:
1. set(variable, value) 2. get(variable) 3. call(actioncode, callerobject*) 4. trace(code, message) 5. parsepath(path) 6. loadFile(file, donecallback, errorcallback*) 7. loadImage(fiel, donecallback, errorcallback*) 8. screentosphere(x, y) 9. spheretoscreen(v, h)krpano Base Object
http://krpano.com/docu/plugininterface/#baseobject
所有的xml中定義的元素、對象和數組對象,包括krpano Interface Object都是繼承與krpano Base Object。(上面說過krpano Plugin Interface就是xml中的
Base提供了一些基礎的添加/注冊屬性或者創建子數組結構的方法:
1. registerattribute(attributename, defaultvalue, setter*, getter*) 2. removeattribute(attributename) 3. getattributes() 4. createobject(objectname) 5. removeobject(objectname) 6. createarray(arrayname) 7. removearray(arrayname)krpano Array and Array-Item Objects
http://krpano.com/docu/plugininterface/#array
krpano中的數組對象,不同于javascript中的數組。當在xml中一個元素定義了name屬性,那么其實就創建了一個krpano數組;或者是當給一個變量設置了array-path,即"arrayname[itemname].variable"時,也創建了krpano數組。
數組中的元素也是繼承與krpano Base Object,并且額外提供了name和index屬性。這些數組元素可以用來保存任何屬性,方法或者是另外一個krpano數組。
例如:
var kr = document.getElementById("krSWFObject"); var hotspots = kr.get("hotspot"); // hotspots就是krpano array var aHotspot = hotspot["spot1"]; // aHotspot就是krpano array item
krpano Array Object提供的屬性和方法:
1. count 2. createItem(name or index) 3. getItem(name or index) 4. renameItem(oldname:String, newname:String) 5. removeItem(name or index) / removearrayitem(name or index) 6. getArray()
krpano Array-item Object提供的屬性:
1. name 2. countkrpano Javascript Interface / krpano Javascript-Interface Object
http://krpano.com/docu/js/#top
在krpano外部同步javascript操作krpano的接口,實現這個接口的對象就是krpano Javascript-Interface Object
這個對象提供的接口有:
1. set(variable, value) 2. get(variable) 3. call(action) 4. spheretoscreen(h, v) 5. screentosphere(x, y)
ygjack: 可以看到這個接口是krpano Interface Object提供接口的子集
獲得krpano Javascript-Interface Object:
var kr = document.getElementById("krpanoSWFObject"); // "krpanoSWFObject"是默認id
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87808.html
摘要:下載,我使用的版本是最新的解壓下載文件,就是官方提供全景視頻,將整個目錄放入服務中,直接訪問就可以預覽了。 使用 krpano 制作全景視頻 krpano的強大我就不多說了,了解過的人應該都知道,現在市場上只要應用全景的幾乎都是使用的krp來實現,krp官方提供了插件,全景視頻使用的是 videoplayer 插件,使用全景攝像機錄制視頻,在將他們播放到網頁上,可以操作鼠標改變視角,也...
摘要:為了實現全立體的全景圖效果,我們采用了軟件將普通魚眼圖片渲染為全景圖說明代碼有過調整,并不能保證運行,主要說明實現思路。顯示全景圖要將圖片顯示出來,我們必須按照規則生成必須的配置文件。我們將根據上傳圖片是生成的唯一碼作為依據生成全景圖。 為了實現全立體的3D全景圖效果,我們采用了Krpano軟件將普通魚眼圖片渲染為720°全景圖 說明:代碼有過調整,并不能保證運行,主要說明實現思路。首...
摘要:之序列化前后端分離就是前臺的開發和后臺的開發分離,這個技術方案的實現需要借助,簡單來說就是開發人員提供編程的接口被其他人調用,調用之后會返回數據供其使用安裝什么是序列化把模型對象轉換為格式然后響應出去,便于客戶端進行數據解析創建序列化類在應 Django RESTful API之序列化 前后端分離:就是前臺的開發和后臺的開發分離,這個技術方案的實現需要借助API,簡單來說就是開發人員提...
概述:Django對各種數據庫都提供了很好的支持,Django為這些數據庫提供了統一的調用接口API,程序員可以根據自己的業務需求選擇不同的數據庫 ORM簡介 概述:對象-關系-映射 作用: 根據類生成表結構;將對象、列表的操作轉換成對應的SQL語句;將SQL語句查詢到的結果轉換為對象或者列表 優點:極大的減輕開發人員的工作量,不需要面對因數據庫的變更而導致代碼無效在修改代碼 圖解: showIm...
摘要:引入的數據結構新加入的數據類型有這些數據結構的支持并不廣泛,在寫這篇文章的時候。是或其他可枚舉的對象,其每個元素是的元數組。開頭的和不對持有引用,不影響。因此,他們沒有辦法對自身的進行直接的枚舉。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...
閱讀 3324·2021-11-23 09:51
閱讀 2449·2021-11-09 09:46
閱讀 1482·2019-08-30 15:54
閱讀 3129·2019-08-30 14:22
閱讀 2914·2019-08-29 12:40
閱讀 1636·2019-08-26 10:33
閱讀 1784·2019-08-23 17:09
閱讀 1560·2019-08-23 16:11