2011-10-27 12 views
7

मेरे पास मूवीक्लिप्स की एक श्रृंखला है और मैं उन्हें मंच पर रखना चाहता हूं। इसलिए उन्हें अद्वितीय और यादृच्छिक रूप से चुना जाना है।एक ऐरे की यादृच्छिक तत्व चुनें एक्शनस्क्रिप्ट 3

मैं यह कैसे कर सकता हूं?

आपके समय के लिए धन्यवाद

उत्तर

8

आप एक यादृच्छिक संख्या Math.random() का उपयोग कर यह तो 0 और 1.

बीच की एक संख्या वापस आ जाएगी, सरणी के एक यादृच्छिक तत्व प्राप्त करने के लिए प्राप्त कर सकते हैं, इस का उपयोग करें:

function getRandomElementOf(array:Array):Object { 
    var idx:int=Math.floor(Math.random() * array.length); 
    return array[idx]; 
} 
+0

नमस्ते, उत्तर के लिए धन्यवाद, लेकिन मैं उन्हें सैट पर कैसे रख सकता हूं? मैंने addChild (सरणी [idx]) के साथ प्रयास किया है लेकिन काम नहीं कर रहा है; – CMS

+0

'stage.addChild (getRandomElementOf (movieClipArray));' या 'stage.addElement (getRandomElementOf (movieClipArray));' –

+0

आपको जोड़ने से पहले मूवीक्लिप्स के 'x' और 'y' गुणों को पहले ही सेट करना होगा (या आप इसे जोड़ने के बाद भी कर सकते हैं) –

0

यदि आपके पास पहले से Array है, तो आप एक यादृच्छिक प्रकार को परिभाषित करने में सक्षम होना चाहिए, फिर आप उन्हें आवश्यकतानुसार मंच में जोड़ सकते हैं।

//get your array as needed... 
var myArray:Array = getYourMovieClipsArray(); 

//randomize it by "sorting" it... 
myArray.sort(randomSort); 

//do something with them... 
for(var i:int=0;i<myArray.length;i++){ 
    addChild(myArray[i]); 
} 



//sorting function 
public function randomSort(objA:Object, objB:Object):int{ 
    return Math.round(Math.random() * 2) - 1; 
} 
+0

जब आप यादृच्छिक अनुक्रमणिका प्राप्त कर सकते हैं तो सरणी को सॉर्ट और पुन: व्यवस्थित क्यों करें? –

+0

मैंने ओपी के प्रश्न में "अद्वितीय" के बारे में टिप्पणी मानी है कि वह यह सुनिश्चित करना चाहता था कि क्लिप कई बार नहीं खींचे गए थे। यदि वांछित है, तो आप मूवी क्लिप सरणी से मेल खाने के लिए इंडेक्स की एक सरणी बना सकते हैं ... इंडेक्स की सरणी को यादृच्छिक बनाएं ... फिर यादृच्छिक सूची 1 से एक बार तक डुबकी सुनिश्चित करने के लिए समाप्त हो जाएं। – scunliffe

+0

हाँ, आप सही हैं! –