Thursday 15 May 2014

android - pEntity 'nameentity' already has a parent: 'Scene'. New parent: 'Scene' -


: डी मैं अलग और अडैच के साथ एक समस्या है ..

  scene.registerUpdateHandler (नई IUpdateHandler () {@Override सार्वजनिक शून्य रीसेट () {} @Override सार्वजनिक शून्य onUpdate (अंतिम नाव pSecondsElapsed) {// बेकार कोड // बेकार कोड // बेकार कोड if (! सुपर) {अगर (player.collidesWith ( ब्लिंकी) || player.collidesWith (पिंकी) || player.collidesWith (रोशनाई पोता हुआ) || player.collidesWith (क्लाइड)) {player.animate (नई लंबे [] {130.130.130.130.130.130}, 24, 29, झूठी); player.stopPlayer ();}} और (यदि (player.collidesWith (ब्लेंकी)) {scene.detachChild (Blinky); respawnGhost ("Blinky");} और अगर (player.collidesWith (पिंकी)) {scene.detachChild (पिंकी); respawnGhost ( "पिंकी");} else if (player.collidesWith (रोशनाई पोता हुआ)) {scene.detachChild (रोशनाई पोता हुआ); respawnGhost ( "रोशनाई पोता हुआ");} else if (player.collidesWith (क्लाइड)) {scene.detachChild (क्लाइड ); RespawnGhost ("Clyde");}}}});   

इस कोड के साथ मैं अलग ..

और इसके साथ:

  निजी शून्य respawnGhost (अंतिम स्ट्रिंग भूत) {अंतिम पथ RespawnPath = new Path (9) .to (265, 295) .to (225,295) .to (225,255) .to (305, 255) .to (305, 295) .to (225, 295) .to (225,255) करें.अभियान (265,255) करें.अभियान (265,215); टाइमरहैंडलर प्रेत टाइमरहैंडलर; आईटीमीटर कॉलबैक कॉलबैक; this.getEngine ()। registerUpdateHandler (spriteTimerHandler = नए TimerHandler (5, सच है, कॉलबैक = नए ITimerCallback () {@Override सार्वजनिक शून्य onTimePassed (TimerHandler pTimerHandler) {अगर (ghost.compareTo ( "ब्लिंकी") == 0) {दृश्य (अन्तिम पाथमोडाइफायर पीपीएथमोडिफायर, फाइनल आईमेटिटी पीइन्टीटी) {} @PathWaypointStarted पर ओवरराइड पब्लिक रिक्त (अंतिम पाथकोडिफायर पीपीएथमोडिफायर, एंड्रॉइड, पीटीएमएक्स) अंतिम आईएनएटीटीई पीईएनटीईटी, फाइनल इंट पीवाईपॉइंट इंडेक्स) {} ओवरव्यूड पब्लिक व्हाइड ऑन पैथवेपिपीफिनेटेड (फाइनल पाथमोडाइफायर पीपीएथमोडिफायर, फाइनल आईईएन्टिटी पीइन्टीटीआई, फाइनल इंक पीवाईपॉइंट इंडेक्स) {} पैथफिनिड पर सार्वजनिक ओएराराइड (फाइनल पाथमोडाइफायर पीपीएथमोडिफायर, फाइनल आईमेटिटी पीइन्टीटी) {ब्लेक्सी दियरेंक्शन = 4 ; Blinky.ghostVel = (int) वेग + 10; Blinky.setVelocity ((int) वेग + 10,0); Blinky.randDir = (int) (randRespawn.nextFloat () * 10)% 3;}})); }   

मैं पुनः-अटैच करें ...

लेकिन जब OnTimePassed () को कहा जाता है, TADAAAA! जंगली अपवाद दिखाई दिया: वी

java.lang.IllegalStateException: pEntity 'Ghost' पहले से ही एक अभिभावक है: 'दृश्य' नए माता-पिता: 'दृश्य'!

लेकिन अगर मैं टिप्पणी करता हूँ:

  // यह .getEngine () .registerUpdateHandler (spriteTimerHandler = नए TimerHandler (5, सच है, कॉलबैक = नए ITimerCallback () {//// @Override //// सार्वजनिक शून्य onTimePassed (TimerHandler pTimerHandler) {  

सभी काम ठीक है ...

कोई मेरी मदद कर सकता है ?:)

ps: मेरी बहुत खराब अंग्रेजी के लिए खेद है §।

मैं आपकी समस्या को आंशिक रूप से समझता हूं और संभवतः सबसे अच्छा जवाब देने की कोशिश करता हूं। पहले अगर आप दृश्य से कुछ इकाई को अलग करना चाहते हैं तो आपको इसका उपयोग करना होगा निम्न कोड वर्णन की तरह अद्यतन हैंडलर को अपडेट करें।

  mActivity.runOnUpdateThread (नई रननाबल) {सार्वजनिक शून्य चला () {mScene.detachChild (mEntity);}});   

यदि आपको कोई अपवाद मिलता है, तो यह दृश्य से इकाई को निकालने का पसंदीदा तरीका है।

और आपको अवैध रूप से पता चला है क्योंकि आपने पहले से ही अटैच किया है इस दृश्य में इसलिए यदि आप एक ही इकाई को फिर से संलग्न करने का प्रयास करते हैं तो यह एक अपवाद को आग लगा देगा।

  spriteTimerHandler = नया टाइमरहैंडलर (5, सत्य, नया आईटीआईमर कॉलबैक () {});   

मैंने ऊपर दिए गए बयान को कहा है क्योंकि आप टाइमर हैंडलर में सही पर लागू होते हैं, इसलिए यह कई समय कॉल करता है। तो समान संस्था दोबारा संलग्न करने का प्रयास करती है।

No comments:

Post a Comment