lastvalue fix
diff --git a/player/js/utils/PropertyFactory.js b/player/js/utils/PropertyFactory.js
index 4b3f7d0..508566c 100644
--- a/player/js/utils/PropertyFactory.js
+++ b/player/js/utils/PropertyFactory.js
@@ -47,9 +47,9 @@
for(k = 0; k < kLen; k += 1){
this.v[k] = this.mult ? bezierData.points[ind].point[k]*this.mult : bezierData.points[ind].point[k];
this.pv[k] = bezierData.points[ind].point[k];
- if(this.lastValue[k] !== this.v[k]) {
+ if(this.lastPValue[k] !== this.pv[k]) {
this.mdf = true;
- this.lastValue[k] = this.v[k];
+ this.lastPValue[k] = this.pv[k];
}
}
}else{
@@ -74,9 +74,9 @@
for(k=0;k<kLen;k+=1){
this.v[k] = this.mult ? bezierData.points[j].point[k]*this.mult : bezierData.points[j].point[k];
this.pv[k] = bezierData.points[j].point[k];
- if(this.lastValue[k] !== this.v[k]) {
+ if(this.lastPValue[k] !== this.pv[k]) {
this.mdf = true;
- this.lastValue[k] = this.v[k];
+ this.lastPValue[k] = this.pv[k];
}
}
break;
@@ -87,9 +87,9 @@
this.v[k] = this.mult ? (bezierData.points[j].point[k] + (bezierData.points[j+1].point[k] - bezierData.points[j].point[k])*segmentPerc)*this.mult : bezierData.points[j].point[k] + (bezierData.points[j+1].point[k] - bezierData.points[j].point[k])*segmentPerc;
this.pv[k] = bezierData.points[j].point[k] + (bezierData.points[j+1].point[k] - bezierData.points[j].point[k])*segmentPerc;
- if(this.lastValue[k] !== this.v[k]) {
+ if(this.lastPValue[k] !== this.pv[k]) {
this.mdf = true;
- this.lastValue[k] = this.v[k];
+ this.lastPValue[k] = this.pv[k];
}
}
break;
@@ -154,16 +154,16 @@
if(len === 1){
this.v = this.mult ? keyValue*this.mult : keyValue;
this.pv = keyValue;
- if(this.lastValue != this.v){
+ if(this.lastPValue != this.pv){
this.mdf = true;
- this.lastValue = this.v;
+ this.lastPValue = this.pv;
}
}else{
this.v[i] = this.mult ? keyValue*this.mult : keyValue;
this.pv[i] = keyValue;
- if(this.lastValue[i] !== this.v[i]){
+ if(this.lastPValue[i] !== this.pv[i]){
this.mdf = true;
- this.lastValue[i] = this.v[i];
+ this.lastPValue[i] = this.pv[i];
}
}
}
@@ -285,6 +285,7 @@
this.keyframes = data.k;
this.offsetTime = elem.data.st;
this.lastValue = -99999;
+ this.lastPValue = -99999;
this.frameId = -1;
this.k = true;
this.mult = mult;
@@ -309,6 +310,7 @@
this.v = new Array(data.k[0].s.length);
this.pv = new Array(data.k[0].s.length);
this.lastValue = new Array(data.k[0].s.length);
+ this.lastPValue = new Array(data.k[0].s.length);
this.lastFrame = initFrame;
checkExpressions.bind(this)(elem,data);
}
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index 73e3358..e0ed095 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -443,7 +443,7 @@
var val = data.x;
var transform,content,effect;
var thisComp = elem.comp;
- var fnStr = 'var fn = function(){'+val+';this.v = $bm_rt;this.mdf=true;}';
+ var fnStr = 'var fn = function(){'+val+';this.v = $bm_rt;}';
eval(fnStr);
var bindedFn = fn.bind(this);
var numKeys = data.k.length;
@@ -499,16 +499,31 @@
value = this.pv;
time = this.comp.renderedFrame;
bindedFn();
+ var i,len;
if(this.mult){
if(typeof this.v === 'number'){
this.v *= this.mult;
}else{
- var i, len = this.v.length;
+ len = this.v.length;
for(i = 0; i < len; i += 1){
this.v[i] *= this.mult;
}
}
}
+ if(typeof this.v === 'number'){
+ if(this.lastValue !== this.v){
+ this.lastValue = this.v;
+ this.mdf = true;
+ }
+ }else{
+ len = this.v.length;
+ for(i = 0; i < len; i += 1){
+ if(this.v[i] !== this.lastValue[i]){
+ this.lastValue[i] = this.v[i];
+ this.mdf = true;
+ }
+ }
+ }
}
return execute;
}