PDA

Volledige versie bekijken : MovieClips uit een Array een gotoAndstop functie meegeven?


michielgo
%Europe/Berlin %423 %2006, 11:09
Hallo experts,

Ik ben bezig met een navigatie voor een website in flash, maar ik ben er niet zon held in. Nu heb ik voor elkaar gekregen via flashfocus dat het menutje werkt, maar de movieclips linken nu naar een URL, maar ze moeten allemaal een gotoAndStop functie krijgen, maar ikweet niet hoe ik dit aan moet geven.

Dit werkte wel maar als ik dan op die "clip1" klikte dan opende hij in verkenner de map waar alle files staan.

"clip1".onRelease = function()
{
gotoAndStop("frame");

}


Mijn vraag is dus, wat moet ik als actionscript invullen om de movieclips uit de array een gotoandStop functie te geven?

Dit is het stukje code waar nu de links in staan.

fscommand("allowscale", "false");

//MENU
links = new Array();
links[1] = ["http://www.google.com"];
links[2] = ["http://www.google.com"];
links[3] = ["http://www.google.com"];
links[4] = ["http://www.google.com"];

// STAGE
posX = Stage.width / 2;
posY = Stage.height / 2;

// Clips INVOEGEN
clipArray = ["clip1", "clip2", "clip3", "clip4"];
for (var i = 0; i <= clipArray.length; i++) {
attachMovie(clipArray[i], clipArray[i], i);
}

Alvast bedankt!

Dauntless
%Europe/Berlin %441 %2006, 11:35
Zo?
fscommand("allowscale", "false");

//MENU
links = new Array();
links[1] = ["http://www.google.com"];
links[2] = ["http://www.google.com"];
links[3] = ["http://www.google.com"];
links[4] = ["http://www.google.com"];

// STAGE
posX = Stage.width / 2;
posY = Stage.height / 2;

// Clips INVOEGEN
clipArray = ["clip1", "clip2", "clip3", "clip4"];
for (var i = 0; i <= clipArray.length; i++) {
var mc:MovieClip = attachMovie(clipArray[i], clipArray[i], i);
mc.url = links[i];
mc.onRelease = function()
{
getURL(this.url);

}
}

michielgo
%Europe/Berlin %448 %2006, 11:45
Hey ik heb nu dit en het werkt nog niet zoals ik het wil, ik heb in een nieuwe layer in frame 2 een bol getekend die hij dan moet laten zien als ik op 1 van de knoppen klik, dat frame waar die bol inzit heeft als framelabel: "frame"

fscommand("allowscale", "false");

//MENU
links = new Array();
links[1] = ["http://www.agent-entertainment.com"];
links[2] = ["http://www.agent-entertainment.com"];
links[3] = ["http://www.agent-entertainment.com"];
links[4] = ["http://www.agent-entertainment.com"];

// STAGE
posX = Stage.width / 2;
posY = Stage.height / 2;

// Clips INVOEGEN
clipArray = ["clip1", "clip2", "clip3", "clip4"];
for (var i = 0; i <= clipArray.length; i++) {
var mc:MovieClip = attachMovie(clipArray[i], clipArray[i], i);
mc.url = links[i];
mc.onRelease = function()
{
gotoAndStop("frame");
;

}
}

aantal = links.length-1;
for (var i = 1; i < aantal + 1; i++) {
attachMovie("clip" + i, i);
}

// Global Signal
_global.signal=true;

// Clips in omloop brengen
this.onEnterFrame = function() {
if (signal) {
mausPos += ((_root._xmouse - posX) / 100);
for (var i = 0; i <= clipArray.length; i++) {
winkel = ((mausPos + (360 / aantal * i)) * Math.PI) / 180;
this[clipArray[i]]._x = posX + (Math.sin(winkel) * 140);
this[clipArray[i]]._y = posY + (Math.cos(winkel) * 80);
this[clipArray[i]]._xscale = 100 + (Math.cos(winkel) * 50)
this[clipArray[i]]._yscale = 100 + (Math.cos(winkel) * 50);
this[clipArray[i]].swapDepths(1000 + (Math.cos(winkel) * 50));
this[clipArray[i]].url = links[i][0];
this[clipArray[i]].onRelease = function() {
getURL(this.url, "_target");
signal = false;
};
this["clip" + i].onRollOver = function() {
signal = false;
};
this["clip" + i].onRollOut = function() {
signal = true;
};
}
}
};
// MX
planet.swapDepths(999 + 1);

Wat is hier mis mee?

michielgo
%Europe/Berlin %454 %2006, 11:54
Heeft echt niemand een idee hoe het moet? ik kom er echt niet uit

Dauntless
%Europe/Berlin %457 %2006, 11:58
Het lijkt me hoogstonwaarschijnlijk dat je elke frame terug alle onReleases moet instellen.... Zet je .fla eens online ?

michielgo
%Europe/Berlin %527 %2006, 13:39
Ok bedankt alvast

Dauntless
%Europe/Berlin %530 %2006, 13:44
Ik zie geen bol ? Of bedoel je die planeet ? En je hebt nergens een frame 2.

Finesky
%Europe/Berlin %540 %2006, 13:57
@Dauntless

moet dit;
mc.url = links[i];

niet

mc.url = links[i+1]; zijn?:)

aangezien de aangesproken array bij 1 begint, en niet bij 0 zoals de for loop.

links = new Array();
links[1] = ["http://www.agent-entertainment.com"];
links[2] = ["http://www.agent-entertainment.com"];
links[3] = ["http://www.agent-entertainment.com"];
links[4] = ["http://www.agent-entertainment.com"];

marcvz
%Europe/Berlin %542 %2006, 14:01
Array begint normaal gesproken ook bij 0. Dus lijkt me logischer om dat aan te passen
Toch scherp opgemerkt.

En het werkt ook gewoon zoals dauntless het heeft, want links.length is nu 5.

Dauntless
%Europe/Berlin %544 %2006, 14:04
Jup, goed gezien :).

Finesky
%Europe/Berlin %546 %2006, 14:06
En het werkt ook gewoon zoals dauntless het heeft, want links.length is nu 5.

Klopt, maar dan krijg je een movieClip2 met de link die eigenlijk voor de movieClip1 bestemd was.
Niet dat het dan niet werkt, maar lijkt me verwarrend op den duur, want als je nu (de eigenlijke) movieClip1 wilt aanspreken moet je movieClip2 gebruiken ext.

Maar wat jij zegt klopt natuurlijk helemaal, dat je beter de array aan kan passen:).

michielgo
%Europe/Berlin %768 %2006, 19:27
Ik heb die mc.url veranderd en heb een frame 2 aangemaakt in layer 10 met frame id "frame", maar nogsteeds als ik op het rode ronddraaiende logo klik opent hij de map in verkenner waar de fla staat en als ik op de andere logos klik opent hij www.agent-entertainment.com

Hoe krijg ik het zover dat als ik op een logo klik dat hij dan naar frame 2 gaat en daar stopt?

michielgo
%Europe/Berlin %529 %2006, 13:41
niemand?

Dauntless
%Europe/Berlin %534 %2006, 13:50
Je wil dus dat zowel agent-entertainment.com geopend wordt (in een html frame) en dat je ook naar de 2de frame in je movie gaat ?

michielgo
%Europe/Berlin %594 %2006, 15:15
Je wil dus dat zowel agent-entertainment.com geopend wordt (in een html frame) en dat je ook naar de 2de frame in je movie gaat ?

Nee waar ik het script vandaan heb daar stond al een link in dus heb ik die maar veranderd in de site waar voor het is. Ik wil dus dat ik iedere movieclip kan laten linken naar een ander frame in mijn scene.

Uiteindelijk moet de bezoeker kunnen klikken op bijvoorbeeld het rode bolletje en dan moet er rechts informatie komen over dit rode bolletje en de navigatie moet blijven draaien.

snapje?

Dauntless
%Europe/Berlin %600 %2006, 15:24
Zo ??
fscommand("allowscale", "false");

//MENU
links = new Array();
links[1] = ["frame"];
links[2] = ["http://www.agent-entertainment.com"];
links[3] = ["http://www.agent-entertainment.com"];
links[4] = ["http://www.agent-entertainment.com"];

// STAGE
posX = Stage.width / 3;
posY = Stage.height / 1.75;

var root = this;
// Clips INVOEGEN
clipArray = ["clip1", "clip2", "clip3", "clip4"];
for (var i = 0; i <= clipArray.length; i++) {
var mc:MovieClip = attachMovie(clipArray[i], clipArray[i], i);
}

aantal = links.length-1;
for (var i = 1; i < aantal + 1; i++) {
attachMovie("clip" + i, i);
}

// Global Signal
_global.signal=true;

// Clips in omloop brengen
this.onEnterFrame = function() {
if (signal) {
mausPos += ((_root._xmouse - posX) / 100);
for (var i = 0; i <= clipArray.length; i++) {
winkel = ((mausPos + (360 / aantal * i)) * Math.PI) / 180;
this[clipArray[i]]._x = posX + (Math.sin(winkel) * 100);
this[clipArray[i]]._y = posY + (Math.cos(winkel) * 70);
this[clipArray[i]]._xscale = 100 + (Math.cos(winkel) * 50)
this[clipArray[i]]._yscale = 100 + (Math.cos(winkel) * 50);
this[clipArray[i]].swapDepths(1000 + (Math.cos(winkel) * 50));
this[clipArray[i]].url = links[i+1];
this[clipArray[i]].onRelease = function() {
root.gotoAndStop(this.url);
signal = false;
};
this["clip" + i].onRollOver = function() {
signal = false;
};
this["clip" + i].onRollOut = function() {
signal = true;
};
}
}
};
// MX
planet.swapDepths(999 + 1);

michielgo
%Europe/Berlin %635 %2006, 16:15
JAAA!! nu werkt het! dat krijg je als je geen verstand hebt van AS, dan zoek je de oplossing heel moeilijk!

erg bedankt Dauntless 8D