Diskuse: Flash CS4 - hitTest - curveTo

Obsah fóra Flash CS4

Přidat příspěvek

  • <<
  • 1
  • >>
  • Zobrazeno 9 příspěvků. | Stránka 1 z 1. | Řazeno podle data vzestupně
  • Portfolio

    Příspěvků: 1101

    27.7.2010 19:03 hitTest - curveTo Odpovědět Citovat

    Zdravim,

    narazil jsem na dalsi zadrhel.
    Jedna se me o to, ze dynamicky vytvarim nekolik krivek,a pro budouci vyvoj bych s nimi rad pracoval, nicmene prave z tohoto duvodu bych potreboval provest detekci kolize techto krivek (ci primek).


    Zadna chybova hlaska se nevypisuje, detekce "funguje" az na to, ze hlasi ze se 2 krivky protinaji/dotykaji i kdyz vidim ze se nedotykaji...


    var krivka1:Shape = new Shape();
    krivka1.graphics.lineStyle(3, 0xff0000, 1); //tloustka, barva, pruhlednost
    krivka1.graphics.moveTo(205, 325); //urcime vychozi bod
    krivka1.graphics.curveTo(400,250,325,175);
    this.addChild(krivka1);
    
    
    
    
    var krivka2:Shape = new Shape();
    krivka2.graphics.lineStyle(1, 0x00ff00, 1); //tloustka, barva, pruhlednost
    krivka2.graphics.moveTo(300, 250); //urcime vychozi bod
    krivka2.graphics.curveTo(100,250,105,220);
    this.addChild(krivka2);
    
    
    
    
    import flash.display.MovieClip;
         import flash.events.*;
         import flash.text.TextField;
         
         
              //krivka1.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
    
    
              //function enterFrameHandler(e:Event):void {
                   if (krivka1.hitTestObject(krivka2)) {
                        trace ("dotyka se");
                   } else {
                        trace ("nedotyka se");
                   }
              //}
              



    co s tim?
    v helpu nejak nemuzu nic vystrachat,

    Edit:
    podle helpu
    http://help.adobe.com/en_US/Fl....ml#hitTestObject()
    by to melo fakcit..., ale nefakci :(



     

    Tatranky.rar - energie sbalená na cesty

  • Portfolio

    Příspěvků: 1101

    27.7.2010 20:37 RE: hitTest - curveTo Odpovědět Citovat

    tak je to asi vyreseny - podle helpu jsem nasel kus kodu jenz produkuje to samy co ja dle predchoziho prispevku pouze misto krivek vykresluje kruhy. dodelal jsem tedy to same do tohoto kodu a najednou to funguje, coz je zahada...


    import flash.display.Shape;
    
    
    var circle1:Shape = new Shape();
    circle1.graphics.beginFill(0x0000FF);
    //krivka1.graphics.lineStyle(3, 0xff0000, 1); //tloustka, barva, pruhlednost
    //krivka1.graphics.moveTo(205, 325);
    circle1.graphics.drawCircle(40, 40, 40);
    addChild(circle1);
    
    
    var circle2:Shape = new Shape();
    circle2.graphics.beginFill(0x00FF00);
    circle2.graphics.drawCircle(40, 40, 40);
    circle2.y = -10;
    addChild(circle2);
    
    
    var circle3:Shape = new Shape();
    circle3.graphics.beginFill(0xFF0000);
    circle3.graphics.drawCircle(40, 40, 40);
    circle3.x = 100;
    circle3.y = 67;
    addChild(circle3);
    
    
    var krivka1:Shape = new Shape();
    krivka1.graphics.lineStyle(3, 0xff0000, 1); //tloustka, barva, pruhlednost
    krivka1.graphics.moveTo(0, 0); //urcime vychozi bod
    krivka1.graphics.curveTo(40,100,100,0);
    //krivka1.graphics.lineTo(20, 50);
    this.addChild(krivka1);
    
    
    var krivka2:Shape = new Shape();
    krivka2.graphics.lineStyle(1, 0x000000, 1); //tloustka, barva, pruhlednost
    krivka2.graphics.moveTo(10, 10); //urcime vychozi bod
    krivka2.graphics.curveTo(50,50,200,10);
    this.addChild(krivka2);
    
    
    
    
    trace(circle1.hitTestObject(circle2)); // true
    trace(circle1.hitTestObject(circle3)); // false
    trace(circle2.hitTestObject(circle3)); // true
    trace(krivka1.hitTestObject(circle2)); //- melo by byt true
    trace(krivka1.hitTestObject(krivka2)); // -||-
    
    
    if (krivka1.hitTestObject(krivka2)) {
                        trace ("dotyka se");
                   } else {
                        trace ("nedotyka se");
                   }



    Edit:tak vyreseno neni nic :( nejak musi haprovat ta detekce souradnic, jinak nevim, pokud pouziju souradnice z tohoto druheho prispevku tak detekce je spravna, nicmene pokud pouziju ty puvodni (z prvniho prispevku) opet to detekuje ze se krivky protinaji, i kdyz se neprotinaji....

    Edit2:
    jeste jsem si to zobrazil "natvrdo" a dotykat se to opravdu nema (priloha)


     

    Kliknutím obrázek zvětšíte nebo otevřete v novém okně

    Tatranky.rar - energie sbalená na cesty

  • moderátor

    Příspěvků: 3702

    30.7.2010 11:38 RE: RE: hitTest - curveTo Odpovědět Citovat

    tady bude problém v tom, že hitTestObject bere objekty ohraničené čtyřúhelníkem, podle rozměrů, takže se vlastně jedná o detekci obdélníků, uvnitř kterých je nějaká grafika, proto to píše kolizi i když to na kolizi nevypadá

     

    <°))))><

  • Portfolio

    Příspěvků: 1101

    30.7.2010 14:35 RE: RE: RE: hitTest - curveTo Odpovědět Citovat

    no, to je spatny teda, neni k dispozici nejaky jiny zpusob detekce, ktera by to urcila?


    presHitTestPoint si to nedovedu predstavit...

     

    Tatranky.rar - energie sbalená na cesty

  • Příspěvků: 893

    30.7.2010 16:53 RE: RE: RE: RE: hitTest - curveTo Odpovědět Citovat

    Zdravim.

    sposobov ako to riesit je naozaj velmi vela, vacsinou su zalozene na matematickej kolizii poskladanych z priamok. Ale raz ma napadlo lahke riesenie (kedze rad pracujem s pixlami :) ) (nie asi moc rychle na vypocet ale na presnost),

    1, porovnavane krivky si prekreslis pomocou metodou draw do bitmaData a umiestnist do bitMap (kazdej nastavis inu farbu) napriklad cervena (#FF0000 ) a zelena (#00FF00)
    2, nasledne im nastavis BlendMode na multiply.
    3, taketo zobrazenie prekreslis do bitmapData
    4, prejdes celu bitmapu pomocou getPixel a ak najdes farbu #000000 (alebu inu zalezi od nastavenia blendMode) tak vies ze nastala kolizia, a presne vies v akom mieste


     

    Racej byt bez ladviny ako bez netu.

  • Portfolio

    Příspěvků: 1101

    30.7.2010 17:50 RE: RE: RE: RE: RE: hitTest - curveTo Odpovědět Citovat

    jo to je zajimavy zpusob, urcite ho vyzkousim

    dik za napad ;)


     

    Tatranky.rar - energie sbalená na cesty

  • Portfolio

    Příspěvků: 208

    30.7.2010 18:37 RE: RE: RE: RE: RE: RE: hitTest - curveTo Odpovědět Citovat

    nastesti na to jsou tridy, ktere vse udelaji za tebe :]..jednu jsem prilozil, pouziti:

    if(HitTest.complexHitTestObject(objekt1,objekt2,1)){ //treti parametr 1 je presnost, vyssi cislo lepsi detekce, pro uzke primky napr 10
         // DETEKCE 
    }

     

    priloha_55324.zip

    LittleBigPlay.com , portfolio

  • Příspěvků: 893

    2.8.2010 9:07 RE: RE: RE: RE: RE: RE: RE: hitTest - curveTo Odpovědět Citovat

    len pre zaujimavost ... ta trieda detekuje koliziu v principe tak ako som popisal

     

    Racej byt bez ladviny ako bez netu.

  • Portfolio

    Příspěvků: 1101

    2.8.2010 9:17 RE: RE: RE: RE: RE: RE: RE: RE: hitTest - curveTo Odpovědět Citovat

    no musim to poradne prostudyrovat co to vlastne dela :D

     

    Tatranky.rar - energie sbalená na cesty

  • <<
  • 1
  • >>
  • Zobrazeno 9 příspěvků. | Stránka 1 z 1. | Řazeno podle data vzestupně

Přihlášení uživatele