[Sie-announce] SIEコード [1436]

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2009年 11月 25日 (水) 23:57:00 JST


Revision: 1436
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1436
Author:   dhrname
Date:     2009-11-25 23:57:00 +0900 (Wed, 25 Nov 2009)

Log Message:
-----------


Modified Paths:
--------------
    branches/05x/055/sie.js

Modified: branches/05x/055/sie.js
===================================================================
--- branches/05x/055/sie.js	2009-11-25 14:16:15 UTC (rev 1435)
+++ branches/05x/055/sie.js	2009-11-25 14:57:00 UTC (rev 1436)
@@ -2198,33 +2198,65 @@
   }
   s.transformable = matrix;
   this.target = s;
+  this.tar = ele;
   this.transformable = matrix;
-  this.currentTime = 0;
-  this._begin = this._end = this._active = null;
+  this.currentFrame = 0;
+  this.attributeName = ele.getAttribute("attributeName").replace(/(fill|stroke)\-/, "&1");
+  this.begin = ele.getAttribute("begin");
+  this.end = ele.getAttribute("end");
+  this.dur = ele.getAttribute("dur");
+  this.fill = ele.getAttribute("fill");
+  this.w = w;
+  this.h = h;
+  this._begin = this._end = null;
   dummy = null;
   return this;
 };
 STSetElement.prototype.set = function (w,h){
+  this.to = this.tar.getAttribute("to");
 };
 //sはフレーム数であることに気をつけること
 STSetElement.prototype._frame = function (/*int*/ s){
   if (this._begin && this._end) {
-    if (this._begin >= s && this.currentTime === 0) {
+    if (this._begin >= s && this.currentFrame === 0) {
       this.beginElement();
-      this.currentTime++;
+      this.currentFrame++;
     }
-    if (this._end >= s && this.currentTime !== 0) {
+    if (this._end >= s && this.currentFrame !== 0) {
       this.endElement();
-      this.currentTime = 0;
+      this.currentFrame = 0;
       this._begin = null;
     }
   }
 };
 };STSetElement.prototype.beginElement = function (){
   var target = this.target;
+  var base = target[this.attributeName];
+  if (base !== void 0) {
+    if (typeof base === "string") {
+      target[this.attributeName] = this.to;
+    } else if (base instanceOf STLength) {
+      var s = base.value;
+      base.newValueSpecified(base.unitType, parseFloat(this.to));
+      base = s;
+    }
+  } else if (target.paint.defaults[this.attributeName] !== void 0) {
+    base = target.paint[this.attributeName];
+    target.paint[this.attributeName] = this.to;
+  } else {
+    base = "";
+  }
+  target.set(this.w, this.h);
+  this.base = base;
 };
 STSetElement.prototype.endElement = function (){
-  var target = this.target;
+  if (this.fill) {
+    if (this.fill === "freeze") {
+      return;
+    }
+  }
+  this.to = this.base;
+  this.beginElement();
 };
 STSetElement.prototype.beginElementAt = function (offset){
   this._begin = offset * 0.8 * 0.024;  //フレーム数に変換(軽量化のために、1s = 800msで計算)




Sie-announce メーリングリストの案内
アーカイブの一覧に戻る