鍵盤上的舞者

          像寫情書一樣Coding...
          隨筆 - 20, 文章 - 0, 評(píng)論 - 15, 引用 - 0
          數(shù)據(jù)加載中……

          2009年12月19日

          Node的屬性改變后通知屬性表單(Propertites Sheet)更新

          Node API提供了一個(gè)方法在Node屬性集變化時(shí)通知注冊(cè)在其上的監(jiān)聽器更新。
          protected final void firePropertySetsChange(Node.PropertySet[] o, Node.PropertySet[] n)

          如圖,精靈動(dòng)畫就是一個(gè)自定義的Node,當(dāng)使用鼠標(biāo)將Node從A點(diǎn)拖拽到B點(diǎn)時(shí),Node坐標(biāo)已經(jīng)改變,可以調(diào)用Node的firePropertySetsChange()方法通知屬性表單(Propertites Sheet)更新顯示。


          因?yàn)?span style="color: #000000;">firePropertySetsChange()是個(gè)受保護(hù)(protected)的方法,如果需要在Node的外部調(diào)用,還可以包裝在自定義的公共(public)方法里。
          public void notifySheetChange(){
              firePropertySetsChange(
          null, Sheet.createDefault().toArray());
          }

          posted @ 2011-03-06 22:15 陳維 閱讀(1247) | 評(píng)論 (1)編輯 收藏

          使用TopComponent群組

          TopComponent群組的作用是在打開一個(gè)TopComponent組件的同時(shí),打開其他相關(guān)的TopComponent組件。例如,當(dāng)打開或者激活GUI編輯器的時(shí)候,“組件面板”、“屬性”窗口和“檢查器”窗口都會(huì)出現(xiàn)。當(dāng)需要一個(gè)組件同時(shí)伴隨著很多其他類似于組件面板窗口的時(shí)候,利用TopComponent群組可以輕松實(shí)現(xiàn)一個(gè)組件的激活引發(fā)其他組件被打開或者被選中。

          定義群組涉及到2XML文件。首先是wsgrp,它代表“窗口系統(tǒng)群組(Window System Group)”。它定義了“窗口系統(tǒng)”的群組,系統(tǒng)根據(jù)它的定義查找對(duì)應(yīng)的目錄,它也定義了群組是否應(yīng)該在啟動(dòng)時(shí)打開。另一個(gè)文件是wstcgrp,它代表“窗口系統(tǒng)TopComponent群組(Window System TopComponent Group)”,這個(gè)文件通過ID識(shí)別單態(tài)的TopComponent組件,同時(shí)還定義了一些群組的打開和關(guān)閉屬性。

          TopComponent群組編程實(shí)例

          首先創(chuàng)建一個(gè)模塊項(xiàng)目TopComponentGroup,然后新建2個(gè)窗口組件(TopComponent),命名為EditorTopComponentSatelliteTopComponent,就像窗口的名字所表示的那樣,SatelliteTopComponent將會(huì)隨著EditorTopComponent的打開和關(guān)閉一同打開和關(guān)閉。

          首先新建一個(gè)名為EditorGroupWsgrpxml文件,這個(gè)文件里定義了名為EditorGroup的編輯器窗口群組。
          <group version="2.0">
              
          <module name="org.jqueen.nb.topcomponentgroup" spec="1.0" />
              
          <name unique="EditorGroup" />
              
          <state opened="false" />
          </group>

          再新建一個(gè)名為SatelliteTopComponentWstcgrp的xml文件,在這個(gè)文件里可以通過ID識(shí)別出SatelliteTopComponent組件。
          <tc-group version="2.0">
              
          <tc-id id="SatelliteTopComponent" />
              
          <open-close-behavior open="true" close="true" />
          </tc-group>

          編輯模塊的layer.xml文件,在系統(tǒng)文件系統(tǒng)中的Windows2目錄添加一個(gè)Group文件夾,將名為"EditorGroup"的群組添加進(jìn)Group。
          <folder name="Groups">
              
          <file name="EditorGroup.wsgrp" url="EditorGroupWsgrp.xml"/>
              
          <folder name="EditorGroup">
                  
          <file name="SatelliteTopComponent.wstcgrp" url="SatelliteTopComponentWstcgrp.xml"/>
              
          </folder>
          </folder>

          編輯EditorTopComponent內(nèi)容,重寫TopComponent類的componentOpened()和componentClosed()方法,在EditorTopComponent被打開和關(guān)閉時(shí)打開和關(guān)閉名為"EditorGroup"的群組。
              @Override
              
          protected void componentOpened() {
                  TopComponentGroup group 
          = WindowManager.getDefault().findTopComponentGroup("EditorGroup");
                  
          if (group != null) {
                      group.open();
                  }
              }

              @Override
              
          public void componentClosed() {
                  TopComponentGroup group 
          = WindowManager.getDefault().findTopComponentGroup("EditorGroup");
                  
          if (group != null) {
                      group.close();
                  }
              }

          至此,就完成了一個(gè)TopComponent群組的編輯。執(zhí)行模塊項(xiàng)目,當(dāng)從窗口菜單中打開EditorTopComponent時(shí)SatelliteTopComponent會(huì)自動(dòng)打開,EditorTopComponent被關(guān)閉時(shí)SatelliteTopComponent也會(huì)自動(dòng)關(guān)閉。

          樣例程序下載

          posted @ 2010-08-07 22:46 陳維 閱讀(1587) | 評(píng)論 (0)編輯 收藏

          JavaFX進(jìn)行HTTP Basic認(rèn)證

          最近用JavaFX寫一個(gè)應(yīng)用調(diào)用Internet上的開放API時(shí)需要進(jìn)行HTTP Basic認(rèn)證,JavaFX提供了一個(gè)類HttpRequest用于發(fā)送Web服務(wù)的請(qǐng)求,類HttpHeader顧名思義就是用來表示HTTP請(qǐng)求的"Header"了。HttpHeader提供了一個(gè)很方便的方法用來創(chuàng)建HTTP Basic認(rèn)證需要的用戶名和密碼"Header":
          public basicAuth(username: java.lang.String, password: java.lang.String) : HttpHeader
          下面就看一下如何使用JavaFX編寫進(jìn)行HTTP Basic認(rèn)證的代碼:
          // var user = "user";
          // var password = "password";
          HttpRequest{
              location: 
          // url
              headers: HttpHeader.basicAuth(user, password)
              
          // 
          }.start();

          posted @ 2010-04-25 02:49 陳維 閱讀(1513) | 評(píng)論 (0)編輯 收藏

          本公司的幾個(gè)開發(fā)類職位的招聘(上海)

          有興趣的朋友可以先給我發(fā)簡(jiǎn)歷,謝謝謝謝謝謝謝謝。
          chenweionline#hotmail.com

          公司基本信息可以訪問
          www.jaiziworld.com
          www.ccjoy.com

          51job上的發(fā)布鏈接
          http://search.51job.com/list/co,c,2088688,0000,10,1.html

          Java/JavaFX富客戶端應(yīng)用開發(fā)工程師

          崗位職責(zé):
          在Java平臺(tái)上進(jìn)行網(wǎng)絡(luò)游戲相關(guān)客戶端產(chǎn)品的研發(fā)。

          任職要求:
          1.Java SE基礎(chǔ)扎實(shí),了解常用設(shè)計(jì)模式并且能夠在開發(fā)過程用適當(dāng)?shù)膽?yīng)用;
          2.熟悉AWT/Swing,Java 2D,JavaFX,NetBeans Platform編程技術(shù);
          3.誠實(shí)守信,具有良好的團(tuán)隊(duì)合作精神,具有迎接挑戰(zhàn)的信心和對(duì)工作的激情。

          優(yōu)先條件:
          1.熟悉游戲相關(guān)業(yè)務(wù)或者有相關(guān)游戲、編輯器工具開發(fā)經(jīng)驗(yàn)者;
          2.熟悉JavaScript,Flash/Flex,Silverlight等其他RIA開發(fā)技術(shù);
          3.熟悉Java ME,Android,Windows Mobile,Symbian,iPhone等移動(dòng)技術(shù)平臺(tái)開發(fā)。


          Java服務(wù)器端開發(fā)工程師

          崗位職責(zé):
          1.具備良好的分析解決問題能力,能獨(dú)立承擔(dān)任務(wù)和有系統(tǒng)進(jìn)度把控能力;
          2.負(fù)責(zé)網(wǎng)絡(luò)游戲服務(wù)器端應(yīng)用邏輯的編寫,分布式系統(tǒng)的架構(gòu)設(shè)計(jì);
          3.編寫相關(guān)的開發(fā)文檔;
          4.與項(xiàng)目組美術(shù)與策劃人員深入溝通,準(zhǔn)確實(shí)現(xiàn)開發(fā)需求。

          任職要求:
          1.熟悉Java語言,熟練掌握J(rèn)2EE相關(guān)技術(shù);
          2.熟悉常用設(shè)計(jì)模式、數(shù)據(jù)結(jié)構(gòu)、算法;
          3.熟練使用:eclipse、PowerDesigner、UML建模、Word、Excel等常用開發(fā)工具。

          優(yōu)先條件:
          1.熟悉游戲相關(guān)業(yè)務(wù)或者有相關(guān)開發(fā)經(jīng)驗(yàn)者。


          移動(dòng)設(shè)備應(yīng)用開發(fā)工程師

          崗位職責(zé):
          1.在主流的移動(dòng)平臺(tái)上開發(fā)互聯(lián)網(wǎng)服務(wù)產(chǎn)品。

          任職要求:
          1.可以熟練使用JavaME,Android或iPhone平臺(tái)編程技術(shù)進(jìn)行開發(fā)。

          優(yōu)先條件:
          1.2年以上移動(dòng)平臺(tái)應(yīng)用開發(fā)經(jīng)驗(yàn);
          2.具有個(gè)人作品者優(yōu)先。


          游戲算法研發(fā)工程師

          崗位職責(zé):
          1.從事網(wǎng)絡(luò)游戲相關(guān)的技術(shù)研發(fā)和算法優(yōu)化工作。

          任職要求:
          1.數(shù)學(xué)、人工智能或計(jì)算機(jī)專業(yè)碩士以上學(xué)歷,數(shù)學(xué)基礎(chǔ)扎實(shí);
          2.熟悉圖像處理、模式識(shí)別、計(jì)算機(jī)視覺等方面的知識(shí);
          3.熟練掌握數(shù)值計(jì)算相關(guān)理論和方法,對(duì)算法的并行處理和優(yōu)化有經(jīng)驗(yàn)的優(yōu)先;
          4.能夠編寫技術(shù)文檔。

          優(yōu)先條件:
          1.熟悉Java語言優(yōu)先

          posted @ 2010-04-15 15:24 陳維 閱讀(256) | 評(píng)論 (0)編輯 收藏

          JavaFX開發(fā)模仿Mac OS的MagicalDock(魚眼效果)

          launch
          MagicalDock修改了上個(gè)版本的設(shè)計(jì),目前的思路是使用2個(gè)容器類Container和Flow完成布局,F(xiàn)low為Node提供水平布局,Container是Flow的容器。
          當(dāng)鼠標(biāo)移動(dòng)到Node上,Node大小變化時(shí)會(huì)改變Flow的尺寸范圍,這時(shí)動(dòng)態(tài)調(diào)整Flow在Container中的位置完成水平位移效果并且將錨定Node的底部使一組Node在變化時(shí)都能夠底線對(duì)齊。

          posted @ 2010-04-09 17:58 陳維 閱讀(1971) | 評(píng)論 (2)編輯 收藏

          SOSHaiti(Preview) - Game In JavaFX

          開發(fā)中的一個(gè)版本,先睹為快,希望有更多的開發(fā)者關(guān)注JavaFX技術(shù)。

          2010年3月22日更新:
          1.修正游戲結(jié)束時(shí)不顯示得分的BUG
          2.增加一個(gè)Menu菜單,在游戲進(jìn)行中可暫停游戲
          3.添加物體間的碰撞特性(使用JBox2D)

          posted @ 2010-03-12 22:25 陳維 閱讀(1988) | 評(píng)論 (6)編輯 收藏

          JavaFX編譯器編譯重載方法的一處BUG

          直接看測(cè)試代碼吧,一共2個(gè)類:BugTest.fx和A.fx,SDK版本是1.2.3。
          /*
           * BugTest.fx
           *
           * Created on 2010-2-25, 22:05:11
           
          */
          package org.jqueen.fx.bug;

          /**
           * 
          @author Leon
           
          */
          public class BugTest {

          // 取消該方法注釋編譯將拋出異常
          //    function test(a: A): Void {
          //        test(5);
          //    }

              function test(s: String): Void {
                  test(
          5);
              }

              function test(i: Integer): Void {
              }

          }
          /*
           * A.fx
           *
           * Created on 2010-2-25, 22:10:45
           
          */

          package org.jqueen.fx.bug;

          /**
           * 
          @author Leon
           
          */

          public mixin class A {}
          BugTest里實(shí)現(xiàn)了3個(gè)帶輸入?yún)?shù)的重載方法,第一個(gè)方法的參數(shù)是自定義類型A,A被聲明為mixin,后2個(gè)的參數(shù)是原始類型。只有在第一個(gè)方法被注釋的情況下該類才可以被編譯通過,否則編譯器會(huì)拋出異常:
          An exception has occurred in the OpenJavafx compiler. Please file a bug at the Openjfx-compiler issues home (https://openjfx-compiler.dev.java.net/Issues) after checking for duplicates. Include the following diagnostic in your report and, if possible, the source code which triggered this problem.  Thank you.
          java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$ClassSymbol
                  at com.sun.tools.javafx.code.JavafxTypes.asSuper(JavafxTypes.java:202)
                  at com.sun.tools.javac.code.Types.isSubtypeUnchecked(Types.java:305)
                  at com.sun.tools.javafx.comp.JavafxResolve.argumentsAcceptable(JavafxResolve.java:421)
                  at com.sun.tools.javafx.comp.JavafxResolve.rawInstantiate(JavafxResolve.java:387)
                  at com.sun.tools.javafx.comp.JavafxResolve.selectBest(JavafxResolve.java:711)
                  at com.sun.tools.javafx.comp.JavafxResolve.findMemberWithoutAccessChecks(JavafxResolve.java:952)
                  at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:906)
                  at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:886)
                  at com.sun.tools.javafx.comp.JavafxResolve.findVar(JavafxResolve.java:567)
                  at com.sun.tools.javafx.comp.JavafxResolve.findIdent(JavafxResolve.java:1228)
                  at com.sun.tools.javafx.comp.JavafxResolve.resolveIdent(JavafxResolve.java:1423)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitIdent(JavafxAttr.java:506)
                  at com.sun.tools.javafx.tree.JFXIdent.accept(JFXIdent.java:52)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionInvocation(JavafxAttr.java:2239)
                  at com.sun.tools.javafx.tree.JFXFunctionInvocation.accept(JFXFunctionInvocation.java:53)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:303)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitBlockExpression(JavafxAttr.java:1373)
                  at com.sun.tools.javafx.tree.JFXBlock.accept(JFXBlock.java:83)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
                  at com.sun.tools.javafx.comp.JavafxAttr.finishFunctionDefinition(JavafxAttr.java:1863)
                  at com.sun.tools.javafx.comp.JavafxMemberEnter$SymbolCompleter.complete(JavafxMemberEnter.java:646)
                  at com.sun.tools.javac.code.Symbol.complete(Symbol.java:400)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionDefinition(JavafxAttr.java:1658)
                  at com.sun.tools.javafx.tree.JFXFunctionDefinition.accept(JFXFunctionDefinition.java:93)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:321)
                  at com.sun.tools.javafx.comp.JavafxMemberEnter$SymbolCompleter.complete(JavafxMemberEnter.java:643)
                  at com.sun.tools.javac.code.Symbol.complete(Symbol.java:400)
                  at com.sun.tools.javafx.comp.JavafxResolve.findMemberWithoutAccessChecks(JavafxResolve.java:943)
                  at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:906)
                  at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:886)
                  at com.sun.tools.javafx.comp.JavafxResolve.findVar(JavafxResolve.java:567)
                  at com.sun.tools.javafx.comp.JavafxResolve.findIdent(JavafxResolve.java:1228)
                  at com.sun.tools.javafx.comp.JavafxResolve.resolveIdent(JavafxResolve.java:1423)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitIdent(JavafxAttr.java:506)
                  at com.sun.tools.javafx.tree.JFXIdent.accept(JFXIdent.java:52)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionInvocation(JavafxAttr.java:2239)
                  at com.sun.tools.javafx.tree.JFXFunctionInvocation.accept(JFXFunctionInvocation.java:53)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:303)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitBlockExpression(JavafxAttr.java:1373)
                  at com.sun.tools.javafx.tree.JFXBlock.accept(JFXBlock.java:83)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
                  at com.sun.tools.javafx.comp.JavafxAttr.finishFunctionDefinition(JavafxAttr.java:1863)
                  at com.sun.tools.javafx.comp.JavafxMemberEnter$SymbolCompleter.complete(JavafxMemberEnter.java:646)
                  at com.sun.tools.javac.code.Symbol.complete(Symbol.java:400)
                  at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionDefinition(JavafxAttr.java:1658)
                  at com.sun.tools.javafx.tree.JFXFunctionDefinition.accept(JFXFunctionDefinition.java:93)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribDecl(JavafxAttr.java:334)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribClassBody(JavafxAttr.java:3696)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribClass(JavafxAttr.java:2808)
                  at com.sun.tools.javafx.comp.JavafxAttr.attribClass(JavafxAttr.java:2763)
                  at com.sun.tools.javafx.main.JavafxCompiler.attribute(JavafxCompiler.java:936)
                  at com.sun.tools.javafx.main.JavafxCompiler.compile2(JavafxCompiler.java:782)
                  at com.sun.tools.javafx.main.JavafxCompiler.compile(JavafxCompiler.java:685)
                  at com.sun.tools.javafx.main.Main.compile(Main.java:624)
                  at com.sun.tools.javafx.main.Main.compile(Main.java:312)
                  at com.sun.tools.javafx.Main.compile(Main.java:84)
                  at com.sun.tools.javafx.Main.main(Main.java:69)

          posted @ 2010-02-25 23:35 陳維 閱讀(1600) | 評(píng)論 (1)編輯 收藏

          JavaFX項(xiàng)目發(fā)布時(shí)虛擬機(jī)參數(shù)設(shè)置方法

          我一直是使用NetBeans IDE開發(fā)JavaFX項(xiàng)目,JavaFX項(xiàng)目編譯后會(huì)在項(xiàng)目目錄下建立一個(gè)dist文件夾,文件夾包含你的程序和另外3個(gè)發(fā)布文件,發(fā)布文件分別是XXX.html、XXX.jnlp和XXX_browser.jnlp,如果需要設(shè)置JavaFX程序運(yùn)行時(shí)的虛擬機(jī)參數(shù),那么可以根據(jù)你的發(fā)布方式選擇在XXX.jnlp或者XXX_browser.jnlp里做出修改,它們都是標(biāo)準(zhǔn)的Java網(wǎng)絡(luò)加載協(xié)議文件。

          例如,我選擇把應(yīng)用發(fā)布到瀏覽器,那么我使用文本編輯器打開文件XXX_browser.jnlp,在<resources>節(jié)點(diǎn)下默認(rèn)有一個(gè)節(jié)點(diǎn)<j2se version="1.5+"/>用于描述程序運(yùn)行需要的JRE版本,我們把它修改為<j2se version="1.5+" java-vm-args="-Xmx256m" />,這樣,我們的應(yīng)用在運(yùn)行時(shí)就可以使用最大256m的內(nèi)存了。同理,可以設(shè)置更多的虛擬機(jī)參數(shù),就不一一舉例了。

          posted @ 2009-12-21 17:02 陳維 閱讀(1400) | 評(píng)論 (0)編輯 收藏

          JavaFX實(shí)現(xiàn)一個(gè)簡(jiǎn)單的模態(tài)窗口

          JavaFX直到目前最新的1.2.1版本里沒有提供模態(tài)窗口或著對(duì)話框,我在項(xiàng)目里通過擴(kuò)展Control自己實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的模態(tài)窗口,控件由2個(gè)類Window.fx和WindowSkin.fx組成,在WindowSkin里實(shí)現(xiàn)了Skin的抽象方法contains,在模態(tài)下始終返回true。

          下面是控件的源碼和一個(gè)演示demo。

          Window.fx
          package org.jqueen.fx.scene.control;

          import javafx.scene.Node;
          import javafx.scene.image.Image;
          import javafx.scene.control.Control;

          /**
           * 
          @author Leon Chen
           
          */
          public class Window extends Control {

              
          public var modal: Boolean;
              
          public var background: Image;
              
          public var content: Node[];

              override 
          protected function create(): Node {
                  skin 
          = WindowSkin {};
                  
          super.create();
                  }
          }

          WindowSkin.fx
          package org.jqueen.fx.scene.control;

          import javafx.scene.control.Skin;
          import javafx.scene.Group;
          import javafx.scene.image.ImageView;

          /**
           * 
          @author Leon Chen
           
          */
          package class WindowSkin extends Skin {

              def windowControl 
          = bind control as Window;
              def bounds : Bounds = bind windowControl.boundsInLocal;
              def background 
          = ImageView {
                          image: bind windowControl.background
                      };
              def content 
          = bind windowControl.content;
              
              init {
                  node 
          = Group {
                      content: bind[background, content]
                  }
              }

              override 
          public function intersects(localX: Number, localY: Number, localWidth: Number, localHeight: Number): Boolean {
                  
          return bounds.intersects(localX, localY, localWidth, localHeight);
              }

              override 
          public function contains(localX: Number, localY: Number): Boolean {
                  
          if (windowControl.modal) {
                      
          return true;
                      } 
          else {
                      
          return bounds.contains(localX, localY);
                      }
              }
          }



          點(diǎn)擊圖片可運(yùn)行程序,非模態(tài)時(shí)背景可以監(jiān)聽到鼠標(biāo)事件。

          posted @ 2009-12-19 02:45 陳維 閱讀(1958) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 玛纳斯县| 五家渠市| 泰安市| 如皋市| 边坝县| 讷河市| 永州市| 长葛市| 息烽县| 河池市| 定西市| 富民县| 平果县| 贵州省| 汕头市| 宝应县| 遂宁市| 满城县| 清镇市| 延吉市| 麻江县| 左权县| 横峰县| 合水县| 崇文区| 漳州市| 襄樊市| 南充市| 华坪县| 五寨县| 石柱| 玛纳斯县| 乌鲁木齐市| 武安市| 体育| 商洛市| 贞丰县| 宁都县| 合作市| 绥江县| 法库县|