PDA

Volledige versie bekijken : Tween stopt bij rollover


jawel
%Europe/Berlin %716 %2007, 18:11
Hoi,

ik ben bezig met een website voor mijn portfolio:

www.funji.net/portfolio

Ik heb het menu zo in elkaar gezet dat het onderverdeeld is in 3 gedeeltes, met elk daaronder een laag:

monologue > in short, read weblog
selected works > 01-05 (werkt nog niet)
contact > business, private

als je bijv. op contact drukt, tweent contact naar rechts en dan komen business & private tevoorschijn.

Het probleem is echter dat bij de eerste keer dat zo'n ding uitklapt, de tween halverwege stopt omdat hij over zo'n 'subknopje' heen rollt. Het gebeurt alleen de eerste keer, als hij weer is ingeklapt en daarna wordt uitgeklapt werkt het prima. Ik heb echt geen idee hoe het komt, misschien door mouseChildren of iets dergelijks of misschien door het feit dat de tekst in bold wordt gezet als er op geklikt wordt. wie weet waar dat aan ligt?

Code voor een rollover knopje:

private function makeRollOver(str:String,type:String):MovieClip
{
var mc:MovieClip = new MovieClip();

var container:MovieClip = new MovieClip();
container.name = "container";
mc.addChild(container);

var out:TextField = new TextField();
out.selectable = false;
out.antiAliasType = AntiAliasType.ADVANCED;
applyStyle(out);
out.htmlText = "<body><span class='right'><span class='color'><span class='menu'>"+str+"</span></span></span></body>";
out.autoSize = TextFieldAutoSize.LEFT;
out.name = "out";
container.addChild(out);

var over:TextField = new TextField();
over.selectable = false;
over.antiAliasType = AntiAliasType.ADVANCED;
applyStyle(over);
over.htmlText = "<body><span class='right'><span class='grey'><span class='menu'>"+str+"</span></span></span></body>";

over.autoSize = TextFieldAutoSize.LEFT;
over.name = "over";
container.addChild(over);
over.y = out.height-30;

var maskMC:MovieClip = new MovieClip();
maskMC.name = "mask";
maskMC.graphics.beginFill(0x000000,1);
maskMC.graphics.drawRect(0,0,out.width,out.height-30);
mc.addChild(maskMC);

container.mask = maskMC;
container.y = -over.y-15;

maskMC.addEventListener(MouseEvent.ROLL_OVER,doRol lOver);
maskMC.addEventListener(MouseEvent.ROLL_OUT,doRoll Out);
maskMC.buttonMode = true;

mc["selected"] = false;

function doRollOver():void
{
if(mc["selected"] == false) {
new Tween(container,"y",None.easeIn,container.y,-15,0.2,true);
} else {
new Tween(container,"y",None.easeIn,container.y,-over.y-15,0.2,true);
}
}

function doRollOut():void
{
if(mc["selected"] == false) {
new Tween(container,"y",None.easeIn,container.y,-over.y-15,0.2,true);
} else {
new Tween(container,"y",None.easeIn,container.y,-15,0.2,true);
}
}
return mc;
}


Code voor uitklappen:

private function makeHider(target:MovieClip):void
{
var hider:MovieClip = MovieClip(target.getChildByName("hider"));
var tohide:MovieClip = MovieClip(target.getChildByName("tohide"));
var container:MovieClip = MovieClip(hider.getChildByName("container"));
var out:TextField = TextField(container.getChildByName("out"));
var over:TextField = TextField(container.getChildByName("over"));

var maskMC:MovieClip = new MovieClip();
var maskWidth:Number = hider.width+tohide.width+15;
maskMC.graphics.beginFill(0x000000,1);
maskMC.graphics.drawRect(0,0,maskWidth,tohide.heig ht);
target.addChild(maskMC);

tohide.mask = maskMC;
var hidePos:Number = -tohide.width-15;
var showPos:Number = 0;
tohide.x = hidePos;

hider.addEventListener(MouseEvent.CLICK,doHide);

function doHide()
{
if(hider["selected"] == false) {
var showTween:Tween = new Tween(tohide,"x",Strong.easeOut,tohide.x,showPos,0.5,true);
new Tween(hider,"x",Strong.easeOut,hider.x,tohide.width+15,0.5,true);
hider["selected"] = true;
out.htmlText = "<body><span class='right'><span class='color'><span class='menu'><b>"+out.text+"</b></span></span></span></body>";
over.htmlText = "<body><span class='right'><span class='grey'><span class='menu'><b>"+over.text+"</b></span></span></span></body>";
} else {
var hideTween:Tween = new Tween(tohide,"x",Strong.easeOut,tohide.x,hidePos,0.5,true);
new Tween(hider,"x",Strong.easeOut,hider.x,0,0.5,true);
hider["selected"] = false;
out.htmlText = "<body><span class='right'><span class='color'><span class='menu'>"+out.text+"</span></span></span></body>";
over.htmlText = "<body><span class='right'><span class='grey'><span class='menu'>"+over.text+"</span></span></span></body>";
}
}
}


bvd :)

jawel
%Europe/Berlin %718 %2007, 18:15
Ik kan de fout opeens niet meer reproduceren :S Wel makkelijk problemen oplossen zo