2010-02-09 37 views
0

我想加載一個帶有按鈕皮膚的swf文件作爲圖像(在swf文件的庫中,我給出了'TickMark'的導出屬性)並設置皮膚使用StyleManager.setStyleDeclaration的彈性按鈕。使用StyleManager.setStyleDeclaration在Flex中設置按鈕皮膚

我收到錯誤,如'TickMark()上的參數計數不匹配。預計2,得到0。

這就是我要做的:

private function init():void 
      { 
      loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE,styleSWFLoaded); 
      loader.load(new URLRequest("styles.swf"),new LoaderContext(false,ApplicationDomain.currentDomain)); 

      } 

    private function createStyle(styleName:String):void 
      { 

      var style:CSSStyleDeclaration = new CSSStyleDeclaration(styleName); 


       var cls:Class = ApplicationDomain.currentDomain.getDefinition(ss) as Class; 

       style.setStyle("upSkin",cls); 

       } 
      } 
      StyleManager.setStyleDeclaration(".buttonme",style,true); 
      } 

當我將這一新風格「buttonme」的按鈕我收到以下錯誤:

ArgumentError: Error #1063: Argument count mismatch on TickMark(). Expected 2, got 0. 

不知道這是爲什麼發生的事情,而奇怪的是,當我嵌入它的工作原理相同的SWF文件,如下圖所示:

[Embed(source="styles.swf", symbol="Tick")] 
private var GraphicClass:Class; 

如果我使用了G級在setStyleDeclaration中的raphicClass,它的工作原理...但基本上我想動態地。

還有其他簡單的方法來動態皮膚(圖像)彈性按鈕嗎?

回答

0

你應該可以像這樣動態設置你的皮膚。它可能與你的TickMark類有關。我假設你做style.setStyle("upSkin", cls);時,clsTickMark,它有兩個必需的構造函數參數:TickMark(arg1:Object, arg2:Object)。真的嗎?在setStyle方法的某個地方,它在做new cls()

如果是這樣,只要確保沒有構造函數參數,它應該工作。

如果沒有,請嘗試跟蹤堆棧跟蹤,並在Flex Builder中使用breakpoints(如果尚未存在),這應該有助於查明問題。

最佳, 蘭斯

+0

Hi Lance, TickMark類在FLA文件(導出設置)中定義。由於我爲導出設置的資產是圖像,導出設置將基類作爲BitmapData。 BitmapData類需要兩個參數,即寬度和高度。 新的cls()發生在flex組件內部,我看到它正在調用沒有參數的。 應該指出,我們不能使用BitmapData作爲skin skin組件的資產,或者我們在這裏真的錯過了一些東西。 – Vipin 2010-02-09 13:40:18

0

我相信,當你在你的Flex應用程序內嵌入出口符號,它會被取大小的關懷和也許只是直接嵌入的PNG文件。

由於您的符號類擴展了BitmapData,它必須通過在構造函數中傳遞所需的參數來實例化。所以無論你遇到什麼樣的錯誤,都是按照預期設計和工作的。

你可以將png換成其他類型的符號(sprite,movieclip等)並導出。在使用setStyle(..,..)時應該可以正常工作(..,..)

+0

感謝您的回覆,abdul。我嘗試在影片剪輯中包裝圖像,但是當我將類設置爲setStyle(upSkin,cls)時,它會拋出一個錯誤,無法將類MyClass轉換爲FlexDisplayObject,位於newSkin = IFlexDisplayObject(new newSkinClass());在Button.as類中。 :( – Vipin 2010-02-15 15:05:48