Autor | Zpráva | ||
---|---|---|---|
osi011 Profil |
#1 · Zasláno: 9. 11. 2006, 07:46:55
Chtěl bych udělat kolizi dvou Movie clipů, ale nějak mi na sebe nereagují. Oba vytvářím později pomocí attachMovie, takže nejspíše bude problém v cestě k nim, ale zkoušel jsem několik možností a stále mi nic nejde.
nepritel1 = this.attachMovie("nepritel1", "nepritel1", -1); nepritel1._x=this._x-205; nepritel1._y=this._y-200; on(keyPress "<Space>"){ strela = this.attachMovie("strela", "strela", -1); if (strela.hitTest( nepritel1 ) == true) { nepritel1.gotoAndStop(2); } else{ nepritel1.gotoAndStop(1); } } |
||
FlashManiac Profil |
#2 · Zasláno: 9. 11. 2006, 11:50:53
nemuze byt problem ve vrstvach..? jak tak vidim tak mas 2x load MC do jedne vrstvy(zkus jeden davat do -2 a druhy do -1)
navic pokud dobre vidim tak ty teh hittest testujes jakmile stisknes klavesu...pokud ta strela ma nejakou dobu letu bylo by asi vhodnejsi to testovat na enterframe jinak v adresaci se problem byti nezda... |
||
osi011 Profil |
#3 · Zasláno: 9. 11. 2006, 15:56:22
Už jsem na to přišel. Bylo to v cestách k objektům, jak jsem myslel. Napadlo mě že při attachMovie se nově přidaný objekt vlastně stává instancí toho, na který se připojuje a je to tak :)
Rád bych ale po kolizi a přehrání dalšího framu z podmínky clip odstranil úplně. Něco jako v téhle metodě, ale tohle nefunguje... onClipEvent(enterFrame) { if (this.strela.hitTest( this._parent.vesmir_pozadi.nepritel1 ) == true) { if(this._parent.vesmir_pozadi.nepritel1.gotoAndStop(2)==true) { removeMovieClip(this._parent.vesmir_pozadi.nepritel1); } } else{ this._parent.vesmir_pozadi.nepritel1.gotoAndStop(1); } } |
||
XXX Profil |
#4 · Zasláno: 9. 11. 2006, 19:40:27
Asi to bude tou podminkou.. predpokladam, ze to ma fungovat,kdyz ta animace bude na snimku 2, takze misto gotoAndStop(2) tam ma byt:
if(this._parent.vesmir_pozadi.nepritel1._currentframe==2) |
||
osi011 Profil |
#5 · Zasláno: 11. 11. 2006, 18:58:40
Ten hitTest už mi funguje, je pořád ten objekt nechce zmizet.
Rád bych, aby se po kolizi přehrál další frame toho objektu this._parent.vesmir_pozadi.nepritel1.gotoAndStop(2) a pak ho smazal this._parent.vesmir_pozadi.nepritel1.removeMovieClip(); Jenže se to nefunguje. Když to nechám v tomto pořadí, tak se druhý frame ani nepřehraje a rovnou se odstraní. To samé u if(this._parent.vesmir_pozadi.nepritel1._currentframe==2) Prosím o radu jak na to. |
||
XXX Profil |
#6 · Zasláno: 11. 11. 2006, 19:21:58
tak to napis takhle:
a do toho tvojeho movieClipu nepritel1 dej na druhy snimek skript: this.unloadMovie(); |
||
XXX Profil |
#7 · Zasláno: 11. 11. 2006, 19:25:50
to je vlastne blbost. musis tam dat gotoAndPlay(2); a ten posledni skriptik dat na 3 snimek, at se ti ten druhy prehraje, prejde to na dalsi a tam to hned zmizi ;-) bude to teda vypadat takhle:
a tohle bude na 3. snimku movieClipu nepritel1: this.unloadMovie(); |
||
osi011 Profil |
#8 · Zasláno: 11. 11. 2006, 23:36:45
Bohužel mi to nefunguje. Ta metoda unloadMovie() ten objekt odstraní pouze, když se na ni odkazuji v druhém snímku, ale druhý snímek už nezobrazí. Ve třetím snímku metoda nějak nereaguje...
|
||
XXX Profil |
#9 · Zasláno: 11. 11. 2006, 23:58:25
treti snimek, ve kterem je metoda unloadMovie() musi byt klicovy (F6) a ve snimku 2 nesmi byt zadna akce stop, aby animace presla na snimek 3. doporucil bych do snimku dat prikaz trace pro kontrolu, jestli se animace na ten snimek vubec dostane:
trace("3.snimek animace"); takhle by to urcite melo fungovat... |
||
osi011 Profil |
#10 · Zasláno: 12. 11. 2006, 00:21:04
První, druhý i třetí snímek je klíčový a jen třetí obsahuje this.unloadMovie(); . Trace ukázal vše v pořádku, ale objekt zůstal zobrazen.
|
||
XXX Profil |
#11 · Zasláno: 12. 11. 2006, 00:29:03
no zda se mi to nelogicke,ale jeste me napada,jestli to neni tim,ze je ten treti snimek prazdny. zkusil bych jeste teda do toho tretiho zkopirovat presne to,co je v tom druhem-myslim obsah toho snimku,ne skript a vsechnu tady nastavit _alpha = 0,takze to tam bude,ale bude to pruhledne. takhle by to mohlo fungovat ;-) skript tam zustane, jaky tam byl-this.unloadMovie();
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0