Flash narazanie - pad symbolu

Programovacie jazyky, rady, poradňa...
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

neviete nekdo pls ako by sa dalo vo flashi urobit narazanie a pad symbolu, ze by sa po dotyku s inym symbolom - objektom vykonala animacia, pripadne neco ine?
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

Daj lepší popis a hlavne verziu ActionScriptu, v ktorej to chceš robiť. Ja ti viem poradiť iba v ActionScript 2.0, ak to potrebuješ v ActionScripte 3.0 na hojku to bude ťažké.
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

2.0
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

A lepší popis? Vieš koľko je spôsobov padania a detegovania objektu? Mňa v tejto chvíli napadá 17 spôsobov. Tak si vyber.
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

odpocitava od y speed, dotkne sa zeme, potom gotoAndPlay(1) a spusti sa animacia
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

Kód: Vybrať všetko

function vytvor(sirka:Number, vyska:Number, farba:Number, poradie:String):MovieClip {
    var vrstva:Number = this.getNextHighestDepth();
    var mc:MovieClip = this.createEmptyMovieClip("stvorcek"+poradie, vrstva);
    mc.beginFill(farba);
    mc.lineTo(0, vyska);
    mc.lineTo(sirka, vyska);
    mc.lineTo(sirka, 0);
    mc.lineTo(0, 0);
    mc.endFill();
    return mc;
}
//
/********************
/*Táto časť je len informatívna a môžeš ju zmazať*/
this.createTextField("stat", this.getNextHighestDepth(), (Stage.width-400)/2, (Stage.height-70)/2, 400, 70);
this.stat.selectable = false;
this.stat.type = "dynamic";
//
var styl:TextFormat = new TextFormat();
styl.color = 0xDDDDDD;
styl.font = "Arial";
styl.size = 60;
styl.align = "center";
/*koniec informatívnej časti
************************/
//
vytvor(20, 20, 0xFF0000, "0");
vytvor(30, 30, 0x0000FF, "1");
//
var rychlost:Number = 2;
var objekt:MovieClip = stvorcek0;
var kurzor:MovieClip = stvorcek1;
//
this.objekt._x = this.objekt._y=-20;
this.kurzor._x = this.kurzor._y=-120;
//
Mouse.hide();
startDrag(this.kurzor, true);
//
this.onEnterFrame = function():Void  {
    //
    if (this.objekt.hitTest(this.kurzor)) {
        //SEM PATRí FUNKCIA KTORA SA MA VYKONAT PRI KOLIZII KURZORU A OBJEKTU
        //_root.gotoAndPlay(2);
    }
    /*************************************
    /*Táto časť je len informatívna a môžeš ju zmazať*/ 
    this.stat.text = "hitTest = "+this.objekt.hitTest(this.kurzor);
    stat.setTextFormat(styl);
    /*koniec informatívnej časti
    ***************************************/
    //
    /*Narážanie objektu do stien*/
    if (objekt._x+objekt._width<Stage.width && !odraz) {
        objekt._x += rychlost;
    } else if (objekt._x>0) {
        odraz = true;
        objekt._x -= rychlost;
    } else {
        odraz = false;
    }
    //
    if (objekt._y+objekt._height<Stage.height && !odraz2) {
        objekt._y += rychlost;
    } else if (objekt._y>0) {
        odraz2 = true;
        objekt._y -= rychlost;
    } else {
        odraz2 = false;
    }
    /* END Narážanie objektu do stien*/
};
 
hohoWERO.swf
(769 Bajtov) 150 stiahnutí
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

dik. to vsetko si dal do frame?

//autoeditácia príspevku (25 Apr 2011, 16:48)
celý ten pohyb som zvládol sám, ale robím NPC pohyb bomby.
nejak mi to nejde.

//autoeditácia príspevku (25 Apr 2011, 16:59)
dam tam:

Kód: Vybrať všetko

if (this.objekt.hitTest(this.kurzor)) {
        _root.gotoandPlay(2);
    }
instance name objektu je objekt a kurzoru(

Kód: Vybrať všetko

onClipEvent(enterFrame){
this._y = root._ymouse;
this._x = root._xmouse;
}
)
kurzor. Nefunguje a davam to do prilohy aj s untitled.
untitled.swf
swf aplikácia
(522 Bajtov) 138 stiahnutí
Untitled-1.zip
UNTITLED KÓD
(5.18 KiB) 12 stiahnutí
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

Áno, to všetko som dal do frame.
//
Toto je to tvoje.
Untitled-1w.swf
(561 Bajtov) 133 stiahnutí
Untitled-1w.rar
(4.16 KiB) 12 stiahnutí
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

bo ale ja potrebujem cisto len ten hitTest
if (_root.objekt.hitTest(_root.kurzor)) {
_root.gotoAndStop(2);
}

potrebujem to po dotyku, nevyznam sa v tom velmi. co potrebujem urobit, aby mi to fungovalo. Kod si mi zmenil, to dik ale co potrebujem k samostatnej funkcnosti hitTestu?
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

Dal som ti už dve verzie zisťovania hitTest. Pomocou onEnterFrame alebo pomocou listeneru objektu onMouseMove. Z toho vyplýva, že pri hitTest je potrebné neustále kontrolovať kolíziu. Pri použití onEnterFrame sa testuje kolízia neustále dookola v rýchlosti podľa nastaveného framerate dokumentu (FPS). Pri použití onMouseMove sa kolízia kontroluje výhradne iba pri pohybe myšky. Máš to napísané správne, ale tú podmienku, ktorú používaš musíš neustále spúšťať dookola nejakým eventom, inak ti to nepôjde. Neviem čo presne chceš vyrobiť skús mi sem napísať scenár hry, alebo čo to má byť a ja ti stým pomôžem. Proste predtým ako začneš programovať naštuduj si teóriu hitTest ako funguje a ako ho použiť.

Čisto hitTest je toto:

Kód: Vybrať všetko

_root.onEnterFrame = function():Void  {
	if (_root.objekt.hitTest(_root.kurzor)) {
		_root.gotoAndStop(2);
	}
};
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

aha dik.

//autoeditácia príspevku (25 Apr 2011, 18:43)
a moze byt:

Kód: Vybrať všetko

onClipEvent(eneterFrame){
if........

}
v clipe alebo vo frame?

//autoeditácia príspevku (25 Apr 2011, 18:54)
weroro:
:respect: :respect: :aasmile29: :aasmile29:
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

Dávaj to všetko na Frame, na clip script nedávaj odvykni si od toho, lebo ti to bude pôsobiť veľké problémy pri väčších aplikáciách (budeš v tom mať strašný bordel, nehovoriac o rýchlosti aplikácie viď. moj článok http://www.hojko.com/post1528998.html#p1528998
Umiestňovanie scriptu:

Prvou a zásadnou zmenou, ktorú by sme mali preferovať pri zápise scriptu, je vyvarovať sa zapisovaniu scriptu priamo na inštancie objektov (návyk zo starších verzií flashu). Vykonávanie takto umiestneného scriptu je o cca 24ms pomalšie ako vykonávanie scriptu umiestneného v snímku časovej osy. Z tohto, ale aj iného dôvodu, bola možnosť umiestňovať script na inštancie v novej verzii ActionScript 3.0 zakázaná a ak script umiestnime na inštanciu, nebude fungovať (debuger bude hlásiť chybu a script bude nefunkčný). Preto je dobré sa naučiť písať script, najlepšie iba do jedného snímku pre celú aplikáciu.
Najlepšie je naučiť sa písať script iba na jeden snímok v celej aplikácii, ale to sa niekedy nedá.). Proste scriptuj iba do Framu.
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

takže preto mi seká kurzor, keď dám do clipu this._x = _root._xmouse....?
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

Nie, kurzor ti seká preto, lebo máš nastavené FPS na 12 .. Nastav to aspoň na 25. Ja to nastavujem na 50.
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

aha. Nepoznas nejake dobre on-line kurzy?
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash narazanie - pad symbolu

Príspevok od používateľa weroro »

www.flash.cz
a otialto http://www.hojko.com/post1638423.html#p1638423 si zmaž smajlíky máš ich tam veľa a porušuješ tým pravidlá fóra.
TLAK
Light Expert
Light Expert
Príspevky: 41
Registrovaný: 24 apr 2011, 15:44

Re: Flash narazanie - pad symbolu

Príspevok od používateľa TLAK »

xD detail.
Napísať odpoveď