2010-07-16 12 views
5

AS3 में आप एक वर्ग चर में एक ग्राफिक एम्बेड कर सकते हैं:एम्बेड कई ग्राफिक्स एक सरणी का उपयोग कर

 [Embed(source="MenuAssets.swf", symbol="topSquare")] 
     public var TopMenuItem:Class; 

मैं मैं कर रहा हूँ यह एक वेबसाइट परियोजना में संपत्ति के सैकड़ों है, तो मैं में संपत्ति एम्बेड करना चाहते हैं त्वरित पहुंच के लिए एक सरणी।

क्या मैं ऐसा कुछ कर सकता हूं? यह संकलन नहीं कर रहा है इसलिए मैं सोच रहा हूं कि यह संभव है या नहीं।

 public var MenuAssets:Array = [ 
      [Embed(source="MenuAssets.swf", symbol="topSquare")], 
      [Embed(source="MenuAssets.swf", symbol="botSquare")], 
      [Embed(source="MenuAssets.swf", symbol="leftSquare")], 
      [Embed(source="MenuAssets.swf", symbol="rightSquare")], 
     ] 

उत्तर

4

आप संपत्तियों को एक ही एफएलए में एम्बेड भी कर सकते हैं। FLA के पुस्तकालय में, "graphics.menu.RightSquare" की तरह हर एक वर्ग का नाम दे तो एक SWC के रूप में निर्यात। बाहरी फ्लैश के रूप में एसडब्ल्यूसी लोड करने के लिए अपने फ्लैश बिल्डर प्रोजेक्ट को कॉन्फ़िगर करें।

import graphics.menu.*; 

new RightSquare(); 
+0

शानदार समाधान! धन्यवाद दस लाख, आपने वास्तव में मुझे कई मैन्युअल [एम्बेड] काम से बचा लिया है। –

+0

मीठा, खुशी हुई यह काम किया! – Casey

4

सामान्य में, फ्लेक्स में मेटाडाटा टैग एक वर्ग स्तर चर करने के लिए लागू होते हैं।

You must use the [Embed] metadata tag before a variable definition, where the variable is of type Class.

आप फिर भी कर सकते हैं:

[Embed(source="MenuAssets.swf", symbol="topSquare")] 
public var TopMenuItem:Class; 

[Embed(source="MenuAssets.swf", symbol="leftSquare")] 
public var LeftMenuItem:Class; 

[Embed(source="MenuAssets.swf", symbol="rightSquare")] 
public var RightMenuItem:Class; 

[Embed(source="MenuAssets.swf", symbol="botSquare")] 
public var BottomMenuItem:Class; 

public var menuAssets:Array = [TopMenuItem, LeftMenuItem, 
           RightMenuItem, BottomMenuItem]; 
+1

+1: तो फिर आप की तरह कुछ कर सकते हैं। लेकिन आप मेरे उत्तर में दिखाए गए अनुसार सरणी को स्वचालित रूप से जेनरेट कर सकते हैं। ;) – back2dos

5

मुझे डर है कि आप नहीं कर सकते कर रहा हूँ। आप क्या कर सकते हैं:

public class Assets { 
    [Embed(source="MenuAssets.swf", symbol="topSquare")] 
    public static const TOP_SQUARE:Class; 
    //... more assets ... 
    public static function getAssets():Array { 
     var ret:Array = []; 
     for each (var s:String in describeType(Assets)[email protected]) ret.push(Assets[s]); 
     return ret; 
    } 
} 
+2

+1 यह अच्छा है! हो सकता है कि आप एक अद्वितीय तार के साथ सभी संपत्ति नाम उपसर्ग कर सकते हैं और निरंतर से उन्हें को फ़िल्टर @ नाम -। सिर्फ मामले में वहाँ अन्य स्थिरांक एक ही कक्षा में घोषित कर रहे हैं। – Amarghosh

+0

@Amarghosh: अच्छा विचार। OTOH, मुझे लगता है कि यह भावना अलग वर्गों में संपत्ति और वास्तविक स्थिरांक अलग करने के लिए होगा। बेशक – back2dos

+0

... :) – Amarghosh

संबंधित मुद्दे