成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

再談webOS開發Enyo基礎控件

移動開發
這篇文檔中,我們再詳細的研究一下kinds, components和controls–這是我們在講解webOS開發的Enyo基礎中涉及到的三個基本的概念。

Kinds

在Enyo中,幾乎所有的代碼都放在叫做kind的對象prototype中。 kind是用enyo.kind工廠方法創建的constructor。

Enyo中的kind與Java或C++中的class類似。例如,kinds通過子kinds繼承superkinds的屬性和方法的方式,提供了一種標準的實現繼承的機制。

這里是一個kinds的例子,它在二維和三維空間中表示一個點. 注意第二個kind (Point3D)繼承自***個kind(Point):

  1. enyo.kind({ 
  2.  
  3. name: "Point", 
  4.  
  5. x: 0, 
  6.  
  7. y: 0, 
  8.  
  9. constructor: function(x, y) { 
  10.  
  11. this.x = x; 
  12.  
  13. this.y = y; 
  14.  
  15. }, 
  16.  
  17. translate: function(dx, dy) { 
  18.  
  19. this.x += dx; 
  20.  
  21. this.y += dy; 
  22.  
  23. }, 
  24.  
  25. toString: function() { 
  26.  
  27. return this.x + ", " + this.y; 
  28.  
  29.  
  30. }); 
  31.  
  32.   

 

  1. enyo.kind({ 
  2.  
  3. name: "Point3D", 
  4.  
  5. kind: "Point", 
  6.  
  7. z: 0, 
  8.  
  9. constructor: function(x, y, z) { 
  10.  
  11. this.inherited(arguments); 
  12.  
  13. this.z = z; 
  14.  
  15. }, 
  16.  
  17. translate: function(dx, dy, dz) { 
  18.  
  19. this.inherited(arguments); 
  20.  
  21. this.z += dz; 
  22.  
  23. }, 
  24.  
  25. toString: function() { 
  26.  
  27. return this.inherited(arguments) + ", " + this.z; 
  28.  
  29.  
  30. }); 
  31.  
  32. p = new Point3D(1, 1, 1); 

Components

Component對象是Enyo的基礎構建塊。所有的Components擁有同樣的特性,不同的Components可以按一種標準的方式協同工作。例如,所有的components有一個name屬性(字符串)。一個組件component可能會創建其它的components,這被稱為擁有。每個component維護著一組它自己擁有的component,并負責這些component的生命周期。

下面是兩個component的kind定義。運行時,一個SimulatedMessage對象創建(并擁有)一個RandomizedTimer對象,RandomizedTimer可以隨機間隔的模擬發送服務消息:

  1. enyo.kind({ 
  2.  
  3. name: "RandomizedTimer", 
  4.  
  5. kind: enyo.Component, 
  6.  
  7. baseInterval: 100, 
  8.  
  9. percentTrigger: 50, 
  10.  
  11. events: { 
  12.  
  13. onTriggered: "" 
  14.  
  15. }, 
  16.  
  17. create: function() { 
  18.  
  19. this.inherited(arguments); 
  20.  
  21. this.job = window.setInterval(enyo.hitch(this, "timer"), this.baseInterval); 
  22.  
  23. }, 
  24.  
  25. destroy: function() { 
  26.  
  27. window.clearInterval(this.job); 
  28.  
  29. }, 
  30.  
  31. timer: function() { 
  32.  
  33. if (Math.random() < this.percentTrigger * 0.01) { 
  34.  
  35. this.doTriggered(); 
  36.  
  37.  
  38.  
  39. }); 
  40.  
  41.   

 

  1. enyo.kind({ 
  2.  
  3. name: "SimulatedMessage", 
  4.  
  5. kind: enyo.Component, 
  6.  
  7. components: [ 
  8.  
  9. {name: "timer", kind: RandomizedTimer, percentTrigger: 10, 
  10.  
  11. onTriggered: "timerTriggered"} 
  12.  
  13. ], 
  14.  
  15. timerTriggered: function() { 
  16.  
  17. this.log("Simulated Service Message Occurred"); 
  18.  
  19.  
  20. }); 

Controls

Control對象是一個控制DOM節點的component(i.e., 一個界面中的元素)。Controls通常是可見的,用戶直接與它們交互。例如按鈕或者輸入框都是controls,但在Enyo中,一個control可能會變得和整個程序一樣復雜。

在下面的例子中我們定義了一個Circle control并把它放在TrafficLight control中:

  1. enyo.kind({ 
  2.  
  3. name: "Circle", 
  4.  
  5. kind: "Control", 
  6.  
  7. published: { 
  8.  
  9. color: "magenta", 
  10.  
  11. bgColor: "black" 
  12.  
  13. }, 
  14.  
  15. content: "Hi", 
  16.  
  17. style: "padding: 2px 6px; border: 3px solid; border-radius: 20px; 
  18.  
  19. cursor: pointer;", 
  20.  
  21. create: function() { 
  22.  
  23. this.inherited(arguments); 
  24.  
  25. this.colorChanged(); 
  26.  
  27. }, 
  28.  
  29. colorChanged: function() { 
  30.  
  31. this.applyStyle("border-color", this.color); 
  32.  
  33. }, 
  34.  
  35. bgColorChanged: function() { 
  36.  
  37. this.applyStyle("background-color", this.bgColor); 
  38.  
  39. }, 
  40.  
  41. mousedown: function() { 
  42.  
  43. this.applyStyle("background-color", "white"); 
  44.  
  45. }, 
  46.  
  47. mouseup: function() { 
  48.  
  49. this.applyStyle("background-color", "black"); 
  50.  
  51.  
  52. }); 
  1. enyo.kind({ 
  2.  
  3. name: "TrafficLight", 
  4.  
  5. kind: "Control", 
  6.  
  7. style: "position: absolute; padding: 4px; border: 1px solid black; 
  8.  
  9. background-color: silver;"}, 
  10.  
  11. components: [ 
  12.  
  13. {kind: "Circle", color: "red", onclick: "circleClick"}, 
  14.  
  15. {kind: "Circle", color: "yellow", onclick: "circleClick"}, 
  16.  
  17. {kind: "Circle", color: "green", onclick: "circleClick"} 
  18.  
  19. ], 
  20.  
  21. circleClick: function(inSender) { 
  22.  
  23. var lights = {red: "tomato", yellow: "#FFFF80", green: "lightgreen"}; 
  24.  
  25. if (this.lastCircle) { 
  26.  
  27. this.lastCircle.setBgColor("black"); 
  28.  
  29.  
  30. this.lastCircle.setBgColor(lights[inSender.color]); 
  31.  
  32. this.lastCircle = inSender
  33.  
  34.  
  35. }); 
責任編輯:佚名 來源: baiyuxiong
相關推薦

2011-07-04 10:55:10

EnyowebOS 3.0 S

2011-07-18 10:57:58

webOSEnyo系統服務

2010-11-23 08:39:41

EnyowebOS 2.0WebOS

2011-07-01 10:52:59

EnyowebOS 3.0 S

2011-07-01 11:02:30

EnyowebOShello world

2012-05-26 23:32:54

webOS

2012-05-27 08:05:00

惠普webOS集體離職

2010-06-17 16:27:26

WAP協議

2011-04-06 15:55:50

開發webOS程序webOS

2009-08-06 18:18:27

ASP.NET控件開發ASP.NET復合控件

2011-04-13 15:31:53

webOS 2.0開發者大會webOS

2012-02-08 09:49:02

惠普webOS開源

2009-08-07 13:31:41

ASP.NET控件開發

2009-08-07 10:34:56

ASP.NET控件開發

2009-04-03 11:12:43

PalmwebOS開發

2011-09-05 14:21:29

webOS

2012-02-15 14:48:16

2012-02-03 15:12:03

Open webOSwebOS惠普

2009-08-06 09:18:01

ASP.NET自定義控ASP.NET控件開發

2010-03-29 14:09:34

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品综合在线 | 欧美一区2区三区4区公司 | 日韩免费高清视频 | 五月综合激情在线 | 亚洲国产成人av好男人在线观看 | 中文字幕一区二区三区不卡在线 | 亚洲丝袜天堂 | 91一区二区 | 在线观看成年视频 | 国产最新网址 | 亚洲国产网站 | 欧美一区二区三区在线播放 | 亚洲国产精品网站 | 在线观看一区 | 日韩成人影院 | 精品视频一区二区三区在线观看 | 国产精品99久久久久久久久久久久 | 一级大片免费 | 日韩精品一区二区三区中文字幕 | 久久视频免费观看 | 99热欧美| 在线超碰 | 激情伊人网 | 美女久久久久久久 | 毛片免费在线 | 在线第一页 | 国产在线视频一区 | 日韩精品一区二区三区高清免费 | 免费h在线 | 日韩在线中文字幕 | 欧美福利在线 | 中文字幕亚洲精品 | 亚洲一区二区三区四区视频 | 欧美日韩亚洲一区 | 国产视频一区二区三区四区五区 | 偷派自拍| 中文字幕一二三区 | 在线视频日韩精品 | 欧美在线一区二区三区 | 久久男人天堂 | 日韩一区二区三区在线 |