2011-04-24 15 views
10

में विरासत परिभाषा के साथ एक संघर्ष मौजूद है मेरे पास एक क्रियालेख 3 लाइब्रेरी आइटम, "बीजी" है, जो वर्ग बीजी क्लास से जुड़ा हुआ है। बीजी में एक स्प्राइट होता है जिसमें एक इंस्टेंस नाम होता है, "बीजी" और इसी तरह बीजी क्लास की सार्वजनिक बीजी संपत्ति होती है। तो कक्षा इस तरह दिखती है:1152: नामस्थान सार्वजनिक

public class BGCass extends Base { 

    public var bg:Sprite; 

    public function BGCass() { 
     bg.width = 200 
    } 
} 

सब कुछ ठीक काम करता है। लेकिन अगर मैं इस तरह बेस क्लास में सार्वजनिक बीजी को स्थानांतरित करना चाहता हूं तो मुझे त्रुटि मिलती है।

public class BGCass extends Base { 
    public function BGCass() { 
     bg.width = 200 
    } 
} 

public class Base extends Sprite { 

    public var bg:Sprite; 

    public function Base() { 
    } 
} 

मैं बेस में गेटर setters का उपयोग कर और उन्हें BGClass में अधिभावी और मैं अभी भी त्रुटि मिलती है की कोशिश की है। क्या यह फ्लैश में एक बग है? क्या कोई साफ समाधान है या मुझे अंत में बीजी प्राप्त करने के लिए कुछ प्रकार का प्रॉक्सी वैरिएबल बनाने की ज़रूरत है? मुझे पता है कि फ्लैश में स्वचालित रूप से "चरण उदाहरण घोषित करें" बंद करना त्रुटि से छुटकारा पा जाएगा लेकिन मुझे इसे डिजाइनरों के लिए रखना होगा। कोई समाधान?

+0

तो आपके पास एक फिल्म क्लिप है जिसे बीजी कहा जाता है? और इसकी बेस क्लास बीजी क्लास है? बीजी क्लास बेस बढ़ाता है? और बीजी मूवी क्लिप में "बीजी" के इंस्टेंस नाम के साथ एक मूवी क्लिप है? मैं यह सुनिश्चित करने के लिए यह कह रहा हूं कि मुझे संरचना सही हो गई है, जो मुझे लगता है कि आपके द्वारा चुने गए नामों के संशोधन के साथ कुछ संशोधनों का उपयोग कर सकते हैं। – Taurayi

उत्तर

8

आपके पास कुछ विकल्प हैं।

  1. अपने "बीजी" चर या "बीजी" चरण उदाहरण का नाम किसी अन्य चीज़ का नाम बदलें ताकि वे मेल न करें।

  2. आप फ़ाइल पर जाएँ> सेटिंग अगले ActionScript 3.0 के लिए बटन प्रकाशित करें ...> फ़्लैश टैब और क्लिक करें "सेटिंग्स ..." यदि आप एक विकल्प डिफ़ॉल्ट लेबल से की जांच कर ली "स्वचालित रूप से मंच उदाहरणों की घोषणा" दिखाई देगा । यदि आप इस विकल्प को अक्षम करते हैं, तो आप जो त्रुटि देख रहे हैं वह गायब हो जाएगी, हालांकि आप परिणामस्वरूप कुछ अन्य त्रुटियों को पॉप अप कर सकते हैं।

यदि आप विकल्प 2 के साथ जाते हैं, तो मेरा मानना ​​है कि वेरिएबल चरण चरण के संदर्भ के साथ स्वचालित रूप से पॉप्युलेट हो जाएंगे, यदि आप उनके नाम छोड़ देते हैं।

कुछ पृष्ठभूमि: जब आप बेस क्लास के साथ लाइब्रेरी आइटम बनाते हैं, तो फ्लैश दृश्यों के पीछे एक नई कक्षा बनाता है जो आपके द्वारा चुनी गई कक्षा को बढ़ाता है। डिफ़ॉल्ट रूप से, फ्लैश को उस वर्ग को सदस्य चर के सेट को कॉन्फ़िगर करने के लिए कॉन्फ़िगर किया गया है जो आपके द्वारा मूवीक्लिप के अंदर दिए गए बच्चों से मेल खाता है।

+0

मैं बीजी में स्प्राइट को "पृष्ठभूमि" का एक उदाहरण नाम ("बीजी" के बजाय) दे रहा हूं और फिर मैंने बीजी क्लास में बीजी = पृष्ठभूमि सेट की है। मैला तरह का लेकिन यह एकमात्र समाधान प्रतीत होता है।"चरण उदाहरणों को स्वचालित रूप से घोषित करें" मेरे लिए काम नहीं करेगा क्योंकि मुझे मौसम की काम करने के लिए मेरी स्क्रिप्ट की आवश्यकता है "चरण उदाहरणों को स्वचालित रूप से घोषित करें" सेट है या नहीं। यह बस एक बग की तरह प्रतीत होता है क्योंकि फ्लैश मुख्य श्रेणी में बीजी परिभाषित होने पर त्रुटि नहीं देता है। त्रुटि केवल तभी दिखाई देती है जब सुपर में बीजी परिभाषित किया गया हो। – Sunny

+0

-1 यह उत्तर पूरी तरह से गलत है। जल्द ही समझाएंगे। –

+2

अजीब, क्योंकि आपकी प्रतिक्रिया सीधे आपके ऊपर बताती है कि मेरी समस्या का पालन करके उसकी समस्या हल हो जाती है, हालांकि उसने औपचारिक रूप से मेरा जवाब अभी तक स्वीकार नहीं किया है। –

-1

जो आप करना भूल रहे हैं वह बीजी स्प्राइट को तुरंत चालू करना है। आपने जो कुछ किया वह सब स्प्राइट को डाला गया था।
असल में, तुम क्या कर रहे है, तो आप का दृष्टांत आप इस मुद्दे को

public class Base extends Sprite { 

    public var bg:Sprite; 

    public function Base() { 
     this.bg = new Sprite(); 
    } 
} 

भी है कि आप पोस्ट करता है अपने कोड के साथ त्रुटि के लिए नहीं होगा एक अशक्त स्प्राइट

var bg:Sprite; 
bg.width // bg is null at this point 

var bg:Sprite; 
bg = new Sprite() 
//or 
var bg:Sprite = new Sprite() 
तो

का उपयोग करने की कोशिश कर रहा है आपके द्वारा पोस्ट की गई त्रुटि से संबंधित नहीं है। तो यह आपकी समस्या का केवल आधा है यदि आपको यह परिवर्तन करने के बाद भी त्रुटि मिलती है तो मुझे बताएं।

+3

इसे तत्काल होने की आवश्यकता नहीं है क्योंकि यह मंच पर पहले से मौजूद है। – Ethan

0

विस्तारित मूवीक्लिप से बस बीजी हटाएं। बीजी बेस मूवीक्लिप से मूवीक्लिप को विस्तारित करने के लिए आया है।

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

  • कोई संबंधित समस्या नहीं^_^