Mask centreren met actionscript.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 332438

Topicstarter
Hey All!

Ik ben al een hele tijd bezig met een flashmovie, het wil maar niet lukken. :(
Onderhand al heel google gehad, dus nu maar is kijken of hier iemand me misschien op weg kan helpen.
Het gaat om het volgende.

Ik heb een flash scalende movie met een begin en een eind foto.
de movie start met de beginfoto en dan met gebruik van een mask wordt de beginfoto "weggefade" naar de eindfoto.

De beginfoto staat even stil dus de mask begint pas op frame 20.
Ik heb in frame 0 het volgende actionscript.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function initStart() 
{
    stage.align=StageAlign.TOP_LEFT;
    stage.scaleMode=StageScaleMode.NO_SCALE;
    
    stage.addEventListener(Event.RESIZE, updateStart);
    stage.dispatchEvent(new Event(Event.RESIZE));

    StartBg.y = 0;
    StartBg.x = 0;
}
initStart();

function updateStart(e:Event) 
{

    StartBg.width = stage.stageWidth;
    StartBg.height = stage.stageHeight;
    
    circleMC.centerCircle.x = stage.stageWidth/2 - circleMC.centerCircle.width/2; 
    circleMC.centerCircle.y = stage.stageHeight/2 - circleMC.centerCircle.height/2; 
    
    circleMC.centerCircle._xscale > circleMC.centerCircle._yscale ? circleMC.centerCircle._yscale=circleMC.centerCircle._xscale : circleMC.centerCircle._xscale=circleMC.centerCircle._yscale;
}

op layer 20 heb ik

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function initEnd() 
{
    stage.align=StageAlign.TOP_LEFT;
    stage.scaleMode=StageScaleMode.NO_SCALE;
    
    stage.addEventListener(Event.RESIZE, updateEnd);
    stage.dispatchEvent(new Event(Event.RESIZE));

    EndBg.y = 0;
    EndBg.x = 0;
}
initEnd();

function updateEnd(e:Event) 
{
    //set background's size
    EndBg.width = stage.stageWidth;
    EndBg.height = stage.stageHeight;
}


De foto backgrounds worden goed gescaled alleen de circleMC.centerCircle krijg ik maar niet in het midden.
Het is de bedoeling als de movie gescaled wordt de circel precies in het midden begint.
Ik heb het wel een paar keer goed gekregen maar dan werkte de scale van de backgrounds weer niet.
Heeft iemand misschien een idee wat ik fout doen? 8)7

Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Nu online
Staat CircleMC wel op positie 0,0? :-) Want met jouw code zet hij hem in het midden van circleMC, niet in het midden van het scherm.

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

Anoniem: 332438

Topicstarter
WernerL schreef op vrijdag 11 juni 2010 @ 18:57:
Staat CircleMC wel op positie 0,0? :-) Want met jouw code zet hij hem in het midden van circleMC, niet in het midden van het scherm.
Thnx, Ik heb nu circleMC op 0,0 gezet wel alweer iets dichter bij maar de circel begint nu vanuit links boven.
De circle moet vanaf het midden beginnen en zegmaar het beeld uit groeien.
Daar had ik dus het volgende stukje code voor maar dat wil niet echt werken :(

code:
1
2
circleMC.centerCircle.x = stage.stageWidth/2 - circleMC.centerCircle.width/2; 
circleMC.centerCircle.y = stage.stageHeight/2 - circleMC.centerCircle.height/2;


Nu moet ik hem dus nog in het midden zijn te krijgen :X

Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Nu online
Haakjes om de delingen heenzetten helpt mischien? :-)
(stage.stageWidth / 2) - (circleWidth / 2)

Anders deel je eerst de stageWidth door 2, daar trek je de circleWidth vanaf, en dan deel je alles weer door 2. Dan kan er wel eens een niet-kloppend antwoord uitkomen idd.

Wat je ook kunt doen is het middepunt van de circle op positie 0,0 van de MC zetten waar hij instaat. Dan hoef je alleen maar circle.x = stageWidth / 2; tedoen.

[ Voor 23% gewijzigd door WernerL op 11-06-2010 20:25 ]

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

  • Tha_TE
  • Registratie: Mei 2002
  • Laatst online: 03-07 01:51
WernerL schreef op vrijdag 11 juni 2010 @ 20:25:
Haakjes om de delingen heenzetten helpt mischien? :-)
(stage.stageWidth / 2) - (circleWidth / 2)

Anders deel je eerst de stageWidth door 2, daar trek je de circleWidth vanaf, en dan deel je alles weer door 2. Dan kan er wel eens een niet-kloppend antwoord uitkomen idd.

Wat je ook kunt doen is het middepunt van de circle op positie 0,0 van de MC zetten waar hij instaat. Dan hoef je alleen maar circle.x = stageWidth / 2; tedoen.
De volgorde waarop de operators worden uitgevoerd is eerst multiplicatieve operators en daarna additieve operators, dus die haakjes maken niets uit.

Acties:
  • 0 Henk 'm!

Anoniem: 332438

Topicstarter
WernerL schreef op vrijdag 11 juni 2010 @ 20:25:
Haakjes om de delingen heenzetten helpt mischien? :-)
(stage.stageWidth / 2) - (circleWidth / 2)

Anders deel je eerst de stageWidth door 2, daar trek je de circleWidth vanaf, en dan deel je alles weer door 2. Dan kan er wel eens een niet-kloppend antwoord uitkomen idd.

Wat je ook kunt doen is het middepunt van de circle op positie 0,0 van de MC zetten waar hij instaat. Dan hoef je alleen maar circle.x = stageWidth / 2; tedoen.
Ik heb het even anders opgelost ipv actioscript 3 heb ik as2 gebruikt dat werkt wel gewoon.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Stage.align = "TL";
Stage.scaleMode = "exactFit";

circleMC._y = Stage.height/2;
circleMC._x = Stage.width/2;

StartBg._height = Stage.height;
StartBg._width = Stage.width;

EndBg._height = Stage.height;
EndBg._width = Stage.width;


sizeListener = new Object();
sizeListener.onResize = function() {

    circleMC._y = Stage.height/2;
    circleMC._x = Stage.width/2;
    
    StartBg._height = Stage.height;
    StartBg._width = Stage.width;
    
    EndBg._height = Stage.height;
    EndBg._width = Stage.width;
    
};
Stage.addListener(sizeListener);


Iig thnx voor de hulp! :)
Pagina: 1