простая ситуация с SVG - PullRequest
       1

простая ситуация с SVG

0 голосов
/ 13 декабря 2011

Этот вопрос решен благодаря Блендеру.

Это сводит меня с ума.Это не сложно, но я не могу получить это.Если я удалю параметр i из вызова метода и метода, он разлетится, как я хочу, но только на один кусок.Если я оставлю это, тогда я должен нажать несколько раз, чтобы разойтись.Также posS не имеет ничего общего с чем-либо.Но если я раскомментирую это, то первый кусок не разлетится.Я хочу, чтобы все части разлетелись на части.Извините за некрасивый код, это мой первый раз с этим.

РЕДАКТИРОВАТЬ: теперь posS не взрывается, хотя его почти на основе posT.

       <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg viewBox='0 0 100 100' version="1.1"
     xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onclick='startxplode()'>

  <style type="text/css">
      .none { fill: none; }
      .logo { fill: #CFA10A; }
      .edge { stroke: white; stroke-width: .5; }
      .test { fill: blue; opacity: .3; }
  </style>

  <script>
  <![CDATA[
    var min = -45; 
    var max = 45;

    var posT = new Array(4);
    for (i = 0; i < 4; i++) {posT[i] = {x:0, y:0};}

    var st = new Array(4);
    for (i = 0; i < 4; i++) {st[i] = 1;}

    var posS = new Array(9);
    for (i = 0; i < 9; i++) {posT[i] = {x:0, y:0};}

    var ss = new Array(9);
    for (i = 0; i < 9; i++) {ss[i] = 1;}

    var deg = new Array(9);
    for (i = 0; i < 9; i++) {deg[i] = 0;}

    function xplode()
    {
        for (i = 0; i < 4; i++) {runT(i);}
        for (i = 0; i < 9; i++) {runS(i);}
    }

    function startxplode() 
    {
       setInterval(xplode, 40);
    }

    function runT(i)
    {
        if (i==0 || i==2){if (st[i]>0) {st[i]+=.02;}}
        else {st[i]+=.1;}

        if (i<2) {
            posT[i].x -= .4;
            if (i==0){posT[i].y -= .4;}
            else posT[i].y -= .4;}
        else{
            posT[i].x += .4;
            if (i==2){posT[i].y -= .4;}
            else posT[i].y += .4;}

        var projectile = document.getElementById('t'+i);

        projectile.setAttributeNS(null, 'transform', 'translate('+posT[i].x+' '+posT[i].y+') scale('+st[i]+')');

        if (posT[i].x > min && posT[i].x < max) {setTimeout(runT, 40);}
    }

    function runS(i)
    {
        posS[i].x -= .9;
        posS[i].y -= 1.4;
        deg[i] += 1 % 360;

        if (ss[i] > 0) 
              ss[i] -= .03;
        else ss[i] += .05

        var projectile = document.getElementById('s'+i);

        projectile.setAttributeNS(null, 'transform', 'rotate('+deg[i]+') translate('+posS[i].x+', '+posS[i].y+') scale('+ss[i]+')');

        if (posS[i].x > min && posS[i].x < max) {setTimeout(runS, 40);}
    }

    function restart() 
    {
        window.location.reload();
    }
  ]]>
  </script>

    <g transform='translate(40 30)'>
      <polygon id='t0' class='logo edge' points='0,0, 5,0, 0,5'/>
      <polygon id='t1' class='logo edge' points='0,12, 0,17, 5,17'/>
      <polygon id='t2' class='logo edge' points='12,0, 17,0, 17,5'/>
      <polygon id='t3' class='logo edge' points='17,12, 17,17, 12,17'/>
  </g>

  <g transform='rotate(45) translate(49.55, -7.1)'>
      <rect id='s0' class='logo edge' x='3.7' y='-8.3' height='5' width='5'/>  
      <rect id='s1' class='logo edge' x='15.3' y='3.3' height='5' width='5'/>
      <rect id='s2' class='logo edge' x='3.7' y='3.3' height='5' width='5'/>
      <rect id='s3' class='logo edge' x='15.3' y='-8.3' height='5' width='5'/>

      <rect id='s4' class='logo edge' x='8.7' y='-8.3' height='5' width='6.5'/>
      <rect id='s5' class='logo edge' x='3.7' y='-3.3' height='6.5' width='5'/>
      <rect id='s6' class='logo edge' x='15.3' y='-3.3' height='6.5' width='5'/>
      <rect id='s7' class='logo edge' x='8.7' y='3.3' height='5' width='6.5'/>
      <rect id='s8' class='logo edge' x='8.7' y='-3.3' height='6.5' width='6.5'/>
  </g>
</svg>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...