how can I build a horizontal spin with 2 MovieClips and Sandy?
A postcard, which one turns.
One MovieClip is the photo and the other MovieClip the text.
The Example-Effekt: the OsX Widgets, when you klick on "i"
http://illustratorwanted.de/_trans/player.html
I tried it with
CODE
import sandy.util.DistortImage;
import com.mosesSupposes.fuse.*;
import com.dynamicflash.utils.Delegate;
import Element;
import flash.display.BitmapData;
class Application
{
public static var instance:Application;
private var _timeline:MovieClip;
private var base:MovieClip;
private var alleElemente:Array;
public var intervalId:Number;
var mitte_Gross:Element;
var mitte_Gross_Uebergang:Element;
public function Application(timeline:MovieClip)
{
this._timeline = timeline;
ZigoEngine.register(Fuse, PennerEasing, FuseFMP);
this.init();
}
public function init ():Void
{
alleElemente = new Array();
mitte_Gross = new Element (0, 0, 590, 0, 590, 308, 0, 308);
mitte_Gross_Uebergang = new Element (590, 0, 0, 0, 0, 308, 590, 308);
var ebene:Number;
var startX:Number;
var tmp:Array;
tmp = this.cover (mitte_Gross, 0, 2, this._timeline.mc_BildDummy);
alleElemente.push({clip:tmp[0], dist:tmp[1]});
tmp = this.cover (mitte_Gross_Uebergang, 0, 1, this._timeline.mc_BildDummy2);
alleElemente.push({clip:tmp[0], dist:tmp[1]});
this._timeline.mc_BildDummy2._visible = false;
this._timeline.mc_BildDummy._visible = false;
}
function cover (obj, x, i, clip):Array
{
this._timeline["bmd"+i] = new BitmapData(clip._width, clip._height);
this._timeline["clip"+i] = this._timeline.createEmptyMovieClip("holder"+i, i);
this._timeline["clip"+i]._x = x;
this._timeline["clip"+i]._y = 150;
this._timeline["clip"+i].cacheAsBitmap = true;
this._timeline["di"+i] = new DistortImage(this._timeline["clip"+i], this._timeline["bmd"+i], 1, 1);
this._timeline["di"+i].setTransform(obj.x1, obj.y1, obj.x2, obj.y2, obj.x3, obj.y3, obj.x4, obj.y4);
this._timeline["di"+i].texture.draw(clip);
this._timeline["clip"+i].di = this._timeline["di"+i];
this._timeline["clip"+i].num = i;
this._timeline["clip"+i].onRelease = Delegate.create(this, klick);
return [this._timeline["clip"+i], this._timeline["di"+i]];
}
function executeCallback():Void
{
this.alleElemente[1].clip.swapDepths(this.alleElemente[0].clip);
clearInterval(intervalId);
}
public function klick (o:Object):Void
{
trace("Klick");
this.ani(mitte_Gross, mitte_Gross_Uebergang, this.alleElemente[0], 10, false, false);
this.ani(mitte_Gross_Uebergang, mitte_Gross, this.alleElemente[1], 0, false, false);
intervalId = setInterval(this, "executeCallback", 100);
}
function ani (ref1:Element, ref2:Element, elem:Object, abst:Number, mitte:Boolean, change:Boolean)
{
var f2:Fuse = new Fuse();
var tmp2_S = ref1.clone();
var tmp2_Z = ref2.clone();
var newX = elem.clip._x + abst;
f2.push([
{target:tmp2_S, x1: tmp2_Z.x1, y1: tmp2_Z.y1, x2: tmp2_Z.x2, y2: tmp2_Z.y2, x3: tmp2_Z.x3, y3: tmp2_Z.y3, x4: tmp2_Z.x4, y4: tmp2_Z.y4, seconds: 0.4}]);
f2.start();
delete elem.clip.onEnterFrame;
elem.clip.onEnterFrame = function ()
{
elem.dist.setTransform(tmp2_S.x1, tmp2_S.y1, tmp2_S.x2, tmp2_S.y2, tmp2_S.x3, tmp2_S.y3, tmp2_S.x4, tmp2_S.y4);
};
}
public static function main (timeline:MovieClip):Void
{
var instance = new Application(timeline);
}
import com.mosesSupposes.fuse.*;
import com.dynamicflash.utils.Delegate;
import Element;
import flash.display.BitmapData;
class Application
{
public static var instance:Application;
private var _timeline:MovieClip;
private var base:MovieClip;
private var alleElemente:Array;
public var intervalId:Number;
var mitte_Gross:Element;
var mitte_Gross_Uebergang:Element;
public function Application(timeline:MovieClip)
{
this._timeline = timeline;
ZigoEngine.register(Fuse, PennerEasing, FuseFMP);
this.init();
}
public function init ():Void
{
alleElemente = new Array();
mitte_Gross = new Element (0, 0, 590, 0, 590, 308, 0, 308);
mitte_Gross_Uebergang = new Element (590, 0, 0, 0, 0, 308, 590, 308);
var ebene:Number;
var startX:Number;
var tmp:Array;
tmp = this.cover (mitte_Gross, 0, 2, this._timeline.mc_BildDummy);
alleElemente.push({clip:tmp[0], dist:tmp[1]});
tmp = this.cover (mitte_Gross_Uebergang, 0, 1, this._timeline.mc_BildDummy2);
alleElemente.push({clip:tmp[0], dist:tmp[1]});
this._timeline.mc_BildDummy2._visible = false;
this._timeline.mc_BildDummy._visible = false;
}
function cover (obj, x, i, clip):Array
{
this._timeline["bmd"+i] = new BitmapData(clip._width, clip._height);
this._timeline["clip"+i] = this._timeline.createEmptyMovieClip("holder"+i, i);
this._timeline["clip"+i]._x = x;
this._timeline["clip"+i]._y = 150;
this._timeline["clip"+i].cacheAsBitmap = true;
this._timeline["di"+i] = new DistortImage(this._timeline["clip"+i], this._timeline["bmd"+i], 1, 1);
this._timeline["di"+i].setTransform(obj.x1, obj.y1, obj.x2, obj.y2, obj.x3, obj.y3, obj.x4, obj.y4);
this._timeline["di"+i].texture.draw(clip);
this._timeline["clip"+i].di = this._timeline["di"+i];
this._timeline["clip"+i].num = i;
this._timeline["clip"+i].onRelease = Delegate.create(this, klick);
return [this._timeline["clip"+i], this._timeline["di"+i]];
}
function executeCallback():Void
{
this.alleElemente[1].clip.swapDepths(this.alleElemente[0].clip);
clearInterval(intervalId);
}
public function klick (o:Object):Void
{
trace("Klick");
this.ani(mitte_Gross, mitte_Gross_Uebergang, this.alleElemente[0], 10, false, false);
this.ani(mitte_Gross_Uebergang, mitte_Gross, this.alleElemente[1], 0, false, false);
intervalId = setInterval(this, "executeCallback", 100);
}
function ani (ref1:Element, ref2:Element, elem:Object, abst:Number, mitte:Boolean, change:Boolean)
{
var f2:Fuse = new Fuse();
var tmp2_S = ref1.clone();
var tmp2_Z = ref2.clone();
var newX = elem.clip._x + abst;
f2.push([
{target:tmp2_S, x1: tmp2_Z.x1, y1: tmp2_Z.y1, x2: tmp2_Z.x2, y2: tmp2_Z.y2, x3: tmp2_Z.x3, y3: tmp2_Z.y3, x4: tmp2_Z.x4, y4: tmp2_Z.y4, seconds: 0.4}]);
f2.start();
delete elem.clip.onEnterFrame;
elem.clip.onEnterFrame = function ()
{
elem.dist.setTransform(tmp2_S.x1, tmp2_S.y1, tmp2_S.x2, tmp2_S.y2, tmp2_S.x3, tmp2_S.y3, tmp2_S.x4, tmp2_S.y4);
};
}
public static function main (timeline:MovieClip):Void
{
var instance = new Application(timeline);
}
But this is not really the effect I want.
Does anyone have an better idea?
