onsdag 16 juli 2014

En bugg i Game Maker när man använder WITH obj {}


  • När jag försökte med följande kod så fungerade det inte (temp_list är en ds_list data struktur):
     str=file_text_read_string(file);
     ds_list_read(temp_list,str);
     for (i=0; i<ds_list_size(temp_list); i+=6)
     {   
       with instance_create(real(temp_list[| i]),real(temp_list[| i+1]),obj_Ball)
      {
        speed=real(temp_list[| i+2]);
        direction=real(temp_list[| i+3]);
        image_xscale=real(temp_list[| i+4]);
        image_yscale=real(temp_list[| i+4]);
        image_blend=real(temp_list[| i+5]);
      }
    }
  • När jag försökte med följande kod så fungerade det bra:
    str=file_text_read_string(file);
     ds_list_read(temp_list,str);
     for (i=0; i<ds_list_size(temp_list); i+=6)
    {
       val[0]=real(temp_list[| i+2]);
       val[1]=real(temp_list[| i+3]);
       val[2]=real(temp_list[| i+4]);
       val[3]=real(temp_list[| i+5]);      
       with instance_create(real(temp_list[| i]),real(temp_list[| i+1]),obj_Ball)
      {
        speed=val[0];
        direction=val[1];
        image_xscale=val[2];
        image_yscale=val[2];
        image_blend=val[3];
      }
  • Slutsats:
    Det verkar som om Game Maker inte klarar av att "skicka med" data strukturer (ds_list ex) till dem andra objekten när man använder "with". Men den går bra med vanliga variabler och arrays.
    • Finns en work around: i with {} så använd other.temp_list[| i+2]. other blir den aktuella instansen man är i när man använder with.

Inga kommentarer:

Skicka en kommentar