国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

krpano各種Objects

n7then / 3563人閱讀

摘要:在定義時的方法中的第三個參數,實際上是文件中元素的內部呈現。但是除了元素的各種屬性意外,還有幾個特殊的屬性和方法在定義時,其中一個接口中的第一個參數,是內部訪問的直接媒介接口對象。數組中的元素也是繼承與,并且額外提供了和屬性。

krpano中有好多object,krpano Plugin Interface, krpano Plugin Object, krpano Base Object, krpano Interface Object, krpano Javascript Interface... 真心覺得官方文檔的組織形式太晦澀了,所以這里整理下

krpano Plugin 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 = "HTML5
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 Object

在定義krpano plugin時,其中一個接口registerplugin中的第三個參數,指代plugin對象本身。
http://krpano.com/docu/plugininterface/#plugininterface

在plugin定義時的registerplugin方法中的第三個參數krpano plugin object,實際上是xml文件中元素的內部呈現。但是除了元素的各種屬性意外,plugin object還有幾個特殊的屬性和方法:

sprite

HTML5 - The HTML

element of the plugin object.

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)

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,并且額外提供了nameindex屬性。這些數組元素可以用來保存任何屬性,方法或者是另外一個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. count 
krpano 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 制作全景視頻 krpano的強大我就不多說了,了解過的人應該都知道,現在市場上只要應用全景的幾乎都是使用的krp來實現,krp官方提供了插件,全景視頻使用的是 videoplayer 插件,使用全景攝像機錄制視頻,在將他們播放到網頁上,可以操作鼠標改變視角,也...

    陸斌 評論0 收藏0
  • ThinkPHP3.2+Krpano實現全景圖

    摘要:為了實現全立體的全景圖效果,我們采用了軟件將普通魚眼圖片渲染為全景圖說明代碼有過調整,并不能保證運行,主要說明實現思路。顯示全景圖要將圖片顯示出來,我們必須按照規則生成必須的配置文件。我們將根據上傳圖片是生成的唯一碼作為依據生成全景圖。 為了實現全立體的3D全景圖效果,我們采用了Krpano軟件將普通魚眼圖片渲染為720°全景圖 說明:代碼有過調整,并不能保證運行,主要說明實現思路。首...

    My_Oh_My 評論0 收藏0
  • 10-django——RESTful API 之序列化

    摘要:之序列化前后端分離就是前臺的開發和后臺的開發分離,這個技術方案的實現需要借助,簡單來說就是開發人員提供編程的接口被其他人調用,調用之后會返回數據供其使用安裝什么是序列化把模型對象轉換為格式然后響應出去,便于客戶端進行數據解析創建序列化類在應 Django RESTful API之序列化 前后端分離:就是前臺的開發和后臺的開發分離,這個技術方案的實現需要借助API,簡單來說就是開發人員提...

    Bowman_han 評論0 收藏0
  • 2-django——模型

    概述:Django對各種數據庫都提供了很好的支持,Django為這些數據庫提供了統一的調用接口API,程序員可以根據自己的業務需求選擇不同的數據庫 ORM簡介 概述:對象-關系-映射 作用: 根據類生成表結構;將對象、列表的操作轉換成對應的SQL語句;將SQL語句查詢到的結果轉換為對象或者列表 優點:極大的減輕開發人員的工作量,不需要面對因數據庫的變更而導致代碼無效在修改代碼 圖解: showIm...

    idisfkj 評論0 收藏0
  • ES6引入的數據結構 - ES6 - ECMAScript特性 - Javascript核心

    摘要:引入的數據結構新加入的數據類型有這些數據結構的支持并不廣泛,在寫這篇文章的時候。是或其他可枚舉的對象,其每個元素是的元數組。開頭的和不對持有引用,不影響。因此,他們沒有辦法對自身的進行直接的枚舉。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...

    fobnn 評論0 收藏0

發表評論

0條評論

n7then

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<