javascript - Rotate, scale based in pivot point working exactly like CSS -


i trying make pixi function rotate , scale css transform work..

i made test here show, if try press run many times, see doesn't work right always.

how can fix "pixitransformlikecss" function ?

var app = new pixi.application(200, 100, {backgroundcolor : 0xffff00});  document.body.appendchild(app.view);  var img = pixi.sprite.fromimage('https://www.gravatar.com/avatar/')  app.stage.addchild(img);    //randomize scale, rotation, rotationorigin  var scale = [      0.5+((50 - math.random()*100)/100),      0.5+((50 - math.random()*100)/100)  ];  var degrotation = parseint(math.random()*100);  var rotationorigin = [    (50 - math.random()*100)/100,    (50 - math.random()*100)/100  ];    //css version  $('img').css({    transform: 'scale('+scale[0]+','+scale[1]+') rotate(-'+degrotation+'deg)',    transformorigin: rotationorigin[0]+'px  '+rotationorigin[1]+'px'  });    //pixi version  img = pixitransformlikecss( img, scale, degrotation, rotationorigin );    //function need  function pixitransformlikecss( container, scale, rotation, origin ){      container.settransform(      40,40, //position      scale[0],scale[1], //scale      -( rotation * math.pi / 180),//rotation      0,0,//skew      origin[0], origin[1] //pivot    );    return container;  }
.html{    background:red;    width:200px;    height:100px;    float:left;  }  img{    position:absolute;    left:40px;    top:40px;  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/4.5.1/pixi.min.js"></script>  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>    <div class="html">    <img src="https://www.gravatar.com/avatar/" />  </div>  <div class="pixi"></div>

ok, working now, remade function "pixitransformlikecss"

var app = new pixi.application(200, 100, {backgroundcolor : 0xffff00});  document.body.appendchild(app.view);  var img = pixi.sprite.fromimage('https://www.gravatar.com/avatar/')      //randomize scale, rotation, rotationorigin  var scale = [      0.5+((50 - math.random()*100)/100),      0.5+((50 - math.random()*100)/100)  ];  var degrotation = parseint(math.random()*100);  var rotationorigin = [    (50 - math.random()*100)/100,    (50 - math.random()*100)/100  ];    //css version  $('img').css({    transform: 'scale('+scale[0]+','+scale[1]+') rotate(-'+degrotation+'deg)',    transformorigin: rotationorigin[0]+'px  '+rotationorigin[1]+'px'  });    //pixi version  img = pixitransformlikecss( img, scale, degrotation, rotationorigin );  app.stage.addchild(img);    //function need  function pixitransformlikecss( container, scale, rotation, origin ){    var signal = scale[0]*scale[1];    if( scale[0] < 0 && scale[1] > 0 ) signal = 1;    if( scale[1] < 0 && scale[0] > 0 ) signal = 1;       container.rotation = ( rotation * math.pi / 180)* (signal<0?1:-1);      container.pivot.set(      origin[0], origin[1]    );      var temp = new pixi.container();    temp.addchild(container);    temp.scale.set(        scale[0],scale[1]    );        container = new pixi.container();    container.addchild(temp);    container.position.set(        40 + origin[0],40 + origin[1]    );      return container;  }
.html{    background:red;    width:200px;    height:100px;    float:left;  }  img{    position:absolute;    left:40px;    top:40px;  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/4.5.1/pixi.min.js"></script>  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>    <div class="html">    <img src="https://www.gravatar.com/avatar/" />  </div>  <div class="pixi"></div>


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -