咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          下面2段代碼是測試代碼,IE9下測試
          都有泄漏,非IE瀏覽器沒問題。困惑


          每秒eval,400個方法調用;200多K的內存泄漏,

          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
              <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                  <title>eval 測試</title>
                  <script>

              
          var afunction = function(_name,_mask){
                   
          return false;
              }
              
              
          var bfunction = function(_color){
              }
              
              
          var cfunction = function(_color){
              }

          var _action = function(){

              
          for(var i=0;i<40;i++){
              
               
                   
          var _script = "if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00');";
                   _script 
          += "if(afunction('222','333')) cfunction('0xCDCD00'); else if(afunction('222','333')) cfunction('0xCDCD00');  else if(afunction('222','333')) cfunction('0xCDCD00'); else if(afunction('222','333')) cfunction('0xCDCD00'); else if(afunction('222','333')) cfunction('0xCDCD00');";
                   
          var _func = new Function(_script);
                    _func();
                  
              }
           
          }

          window.onload 
          = function() {
              setInterval(_action,
          1000);
          };

          </script>

              </head>
              <body>
                  
              </body>
          </html>
          2.



          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
              <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                  <title>eval 測試</title>
                  <script>

          var _action = function(){

              
          var afunction = function(_name,_mask){
                   
          return false;
              }
              
              
          var bfunction = function(_color){
              }
              
              
          var cfunction = function(_color){
              }
              
              
          for(var i=0;i<40;i++){
                   
          var _script = "if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00'); else if(afunction('111','222')) bfunction('0xCDCD00');";
                   _script 
          += "if(afunction('222','333')) cfunction('0xCDCD00'); else if(afunction('222','333')) cfunction('0xCDCD00');  else if(afunction('222','333')) cfunction('0xCDCD00'); else if(afunction('222','333')) cfunction('0xCDCD00'); else if(afunction('222','333')) cfunction('0xCDCD00');";
                   eval(_script);
              }
           
          }

          window.onload 
          = function() {
              setInterval(_action,
          1000);
          };

          </script>

              </head>
              <body>
                  
              </body>
          </html>

          posted @ 2012-08-15 16:53 oathleo 閱讀(1731) | 評論 (1)編輯 收藏

          HTML5的canvas需要firefox, safari, chrome, opera或者IE9. 對低于9的IE版本,該游戲使用ExplorerCanvas庫來模擬,雖然視覺效果差一些但也可以使用.簡單寫寫canvas兼容低版本(<9)IE的經驗.

          Canvas是HTML5新增加的元素, 可以方便的畫圖. Firefox, safari, chrome, opera的最近版本以及IE9都支持. IE8及以下不支持HTML5, 但是ExplorerCanvas庫(http://excanvas.sourceforge.net/)調用IE內部功能提供了幾乎相同的API. ExplorerCanvas不支持字體, 所以為了使用文字, 還需要使用canvas-text庫(http://code.google.com/p/canvas-text/).

          使用ExplorerCanvas及canvas-text, 需要在HTML header里包括:  
            <script type="text/javascript" src="javascript/excanvas/excanvas.js"></script>
            <script type="text/javascript" src="javascript/excanvas/canvas.text.js"></script>
            <script type="text/javascript" src="javascript/excanvas/faces/optimer-normal-normal.js"></script>

          如果同一頁HTML要兼容低版本IE和其它支持HTML5的瀏覽器, 可以用如下的語法選擇性加入低版本IE需要的部分:  
            <!--[if IE]>
            <script type="text/javascript" src="javascript/excanvas/excanvas.js"></script>
            <script type="text/javascript" src="javascript/excanvas/canvas.text.js"></script>
            <script type="text/javascript" src="javascript/excanvas/faces/optimer-normal-normal.js"></script>
            <![endif]-->  

          下面的部分包括在HTML的BODY里, canvas元素的后面:
            <!--[if ! IE]>--> <script type="text/javascript" src="javascript/mycode.js"></script> <!--<![endif]-->
            <!--[if IE]> <script type="text/javascript" src="javascript/mycode.ie.js"></script> <![endif]-->

          下面是mycode.ie.js不同于mycode.js的部分.  

          1. addEventListener -> attachEvent
          別的瀏覽器用addEventListener. IE用attachEvent. 對于事件名, IE要多加一個"on". 比如IE用"onmousedown", 別的瀏覽器用"mousedown".  

          2. 為了兼容手機, 鼠標事件為觸屏事件取代, 所以mousedown/mouseup/mousemove改用如下的事件: touchstart/touchend/touchmove.

          3. event.pageX -> pageX(event)
          別的瀏覽器直接用event.pageX. IE完全不同, 所以另外自定義一個函數pageX(event)來達到相同效果:
          function pageX(e) {
            if (e.pageX) return e.pageX;
            else if (e.clientX)
            return e.clientX + (document.documentElement.scrollLeft ?
            document.documentElement.scrollLeft : document.body.scrollLeft);
            else return null;
          }

          4. in event handlers, this.offsetLeft/Top -> vCanvas.offsetLeft/Top
          別的瀏覽器this指代事件發生的元素, 這里是canvas. IE的this指代window, 所以要專門指明vCanvas.offsetLeft/Top.

          5. onmouseout在IE里行為不穩定, 所以應避免使用, 或者改用onmouseleave.

          6. 辨認鼠標的左右鍵, 別的瀏覽器用event.which, IE用event.button.

          7. DIV元素的半透明效果,別的瀏覽器用 style="background-color:rgba(255,255,255,0.75);", IE用style="background-color: white; opacity:0.75;filter:alpha(opacity=75);"  

          8. 定義元素高度和寬度時,IE常要指明單位px,別的瀏覽器不用. 比如:
            <!--[if ! IE]>-->  
            <table id="Toolbar" border="0" cellpadding="2" cellspacing="0" bgcolor="#ffffff" style="font-size:12px; width:320;">
            <!--<![endif]-->

            <!--[if IE]>  
            <table id="Toolbar" border="0" cellpadding="2" cellspacing="0" bgcolor="#ffffff" style="font-size:12px; width:320px;">
            <![endif]-->

          9. 另外IE引擎慢一些, 所以別的瀏覽器里運行流暢的canvas事件, 在IE里要簡略一些來保證運行速度.

          posted @ 2012-08-10 11:52 oathleo 閱讀(493) | 評論 (0)編輯 收藏

          1.目前使用全刷策略,即每秒全刷整張圖(xml格式),復雜圖形通訊量在30K左右(gzip壓縮),桌面瀏覽器:FF、Google Chrome 運行CPU占用3%左右
          2.移動設備測試效果同1
          3.桌面IE8下使用excanvas插件,可以打開看但效率很低,無法實現秒級刷新(IE9下效果未知)
           
          使用canvas已可開發出非IE瀏覽器實時圖形,適合桌面和移動系統
          桌面IE8及以下,仍然沒有高效的圖形展示方案
          如客戶端局部刷新,應該能提高通訊、展示效率,但大大提升開發難度,但如想IE8下實現秒級刷新,估計只能依靠優秀的局部刷新技術來實現



          2

          posted @ 2012-08-03 08:56 oathleo 閱讀(1102) | 評論 (0)編輯 收藏

          1.canvas draw橢圓 通過 scale 
          2.arc 前必須beginPath 
                  canvas_context.save();
                  canvas_context.scale(1, _scale);
                  canvas_context.beginPath();
                  canvas_context.arc(_centerX, _centerY, parseInt(_bounds[2] * 0.5), 0,(Math.PI/180)*360, true);
               
                  canvas_context.restore();

          posted @ 2012-07-31 10:21 oathleo 閱讀(826) | 評論 (0)編輯 收藏

          visio本身的格式不用浪費時間了,太復雜,即使是它明文的,讀起來也是吃力的要命

          所以嘛,繞著來,visio可以轉svg,svg這么通用的格式,就好讀取多了,可以自己讀,也可以找第三方

          這里使用最常見的batik,讀的真心不錯!自己再從batik里面讀取,方便多了

          因為是公司的東西,所以只能發點截圖了

          visio原圖



          讀取batik里的對象,再轉格式后展示的效果


          posted @ 2012-03-23 16:54 oathleo 閱讀(2021) | 評論 (0)編輯 收藏

          友人出的新書:恭喜并強烈推薦下 《Ext江湖》,
          http://product.china-pub.com/194667

          摘錄一段別人的評價:
          本書每一章節思路清晰、重點突出,文風樸實、目標明確,具有很強的針對性、實用性;本書每一樣例以開發者角度,循序漸進,從淺入深一步一步娓娓道來;Ext江湖,處處充滿驚喜,處處埋藏絕技,它就是歐萊雅,你值得擁有!

          posted @ 2011-12-22 13:47 oathleo 閱讀(1745) | 評論 (4)編輯 收藏

           
          仿射變換可以理解為
          ?對坐標進行放縮,旋轉,平移后取得新坐標的值。
          ?經過對坐標軸的放縮,旋轉,平移后原坐標在在新坐標領域中的值。
           
          如上圖所示,XY坐標系坐標軸旋轉θ,坐標原點移動(x0,y0)。
          XY坐標系中的坐標(X,Y),則求新坐標系xy中的坐標值的方程組為:
           
          X = X?cosθ - Y?sinθ + x0
          Y = X?sinθ + Y?cosθ + y0
           
          寫成矩陣形式為
           
          | x |              | cosθ   sinθ |   | x0 |
          |   | = | X Y | * |               | + |    |
          | y |              | -sinθ cosθ |   | y0 |
           
          為將原點移動的值放入矩陣,則可以加入一個不影響原方程組的解的冗余方程。于是可以寫成
           
          X = X?cosθ - Y?sinθ + x0
          Y = X?sinθ + Y?cosθ + y0
          1 = X?0     + Y?0     + 1
           
          寫成矩陣形式為
          | x |                 | cosθ   sinθ   0|
          | y | = | X Y 1 | * | -sinθ cosθ   0|
          | 1 |                 | x0      y0      1|
           
          這個矩陣就是Helmert變換矩陣。
           
          考慮到新坐標系對于原坐標系在x,y兩個坐標軸上的放縮率,可分別表示為λx和λy,則Helmert變換方程組可以修改為
           
          X = (λx)X?cosθ - (λy)Y?sinθ + x0
          Y = (λx)X?sinθ + (λy)Y?cosθ + y0
           
          同樣按照前述方法寫成三階矩陣為
           
          | x |                 | (λx)cosθ   (λx)sinθ   0|
          | y | = | X Y 1 | * | (λy)-sinθ (λy)cosθ   0|
          | 1 |                 |  x0           y0          1|
           
          這個矩陣就是affine變換矩陣,仿射矩陣。

          posted @ 2011-12-20 11:21 oathleo 閱讀(400) | 評論 (0)編輯 收藏

          abstract 該類

          posted @ 2011-12-12 16:57 oathleo 閱讀(258) | 評論 (0)編輯 收藏

          12月4日傍晚,中國農業大學經濟管理學院副教授葛長銀發了一條微博,“請大家注意年終獎臨界點,寧可少千元不要超一元”,并舉出例子,
          比如年終獎為 18000元,那么要繳納540元的稅,
          如果按年終獎為18001元,則需要多納稅1155.1元,即1695.1元。
          同理,54001元的年終獎比 54000元多納4950.2元;
          發108001元比108000元多納24390.25元;
          發420001元比420000元多納19250.3元;
          發 660001元比660000元多納30250.35元;
          發960001元比960000元多納88000.45元。

          posted @ 2011-12-07 13:52 oathleo 閱讀(314) | 評論 (1)編輯 收藏

          1.遇到的問題:flex全屏下,使用
          http://www.aygfsteel.com/oathleo/archive/2011/11/29/365125.html
          的方法,無法解決右鍵菜單自定義了

          2.解決的問題
          flex里使用了flex ---》eval js  ---》回調flex對象注冊方法
          其中js回調 flex對象上注冊方法時
          IE下可以直接使用  objectID.方法名  來調用,FF下不行

          原來FF下是使用document.getElementById('"+ objectID +"') 來找到flex對象的,IE也兼容該方法

          posted @ 2011-12-05 17:09 oathleo 閱讀(1471) | 評論 (2)編輯 收藏

          僅列出標題
          共17頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
          主站蜘蛛池模板: 正镶白旗| 安乡县| 康马县| 高清| 商丘市| 济源市| 秦安县| 河北区| 会宁县| 陵川县| 桐庐县| 明水县| 海城市| 保德县| 个旧市| 武功县| 沾益县| 宜都市| 江源县| 衡东县| 河东区| 林口县| 丰台区| 湘潭市| 卓尼县| 平遥县| 张家口市| 巨野县| 四川省| 望江县| 鹤庆县| 建瓯市| 常德市| 大渡口区| 平定县| 巴林右旗| 廊坊市| 泾源县| 咸丰县| 东兰县| 进贤县|