Just nu i M3-nätverket
Gå till innehåll

bild som förflyttas vid knapptryck??


monkeyface

Rekommendera Poster

skulle vilja ha en bild som förflyttas när man trycker på en länk.. att själva bilden är maskad på något sätt, att den förflyttas när man trycker på en knapp och bara ser en del av bilden.

 

lite svårt att förklara men kolla den här sidan så förstår ni nog vad jag menar. http://www.ryangiggs.cc/v2/

 

om någon vet så får ni gärna berätta hur...

 

tack

 

Länk till kommentar
Dela på andra webbplatser

Vad är det som e problemet? är det själva animationen eller är det masken av bilden, knappens actionscript eller kanske rentutav allting?

 

svårt att skriva svar när man inte vet vad du kan.

 

Mvh A

 

Länk till kommentar
Dela på andra webbplatser

Tack för svaret!

ja det är väl hela grejen, maskning förstår jag nog men inte hur man får en bild att rulla sådär.. förstår att man gör en lång bild som man sen bestämmer ska förflyttas, men hur?? hur får man den att rulla och inte bara dyka upp där man vill att den ska vara när man trycker på en knapp.

 

hur sätter man ett sådant actionscript?

 

du får gärna förklara som om jag vore 12 år :)

 

tack på förhand /E

 

Länk till kommentar
Dela på andra webbplatser

ok det verkar som att projektet blir lite väl svårt om du inte har hållit på med actionscript förut.

 

Vad du skulle kunna börja med är att:

 

Rita en bild

Markera den och tryck på F8

Markera movieclip och ge den ett namn, tryck på ok.

MovieClipet borde nu vara markerat med en blå fyrkant. om inte så markera movieclipet.

längst ner borde du nu få upp lite olika fält, ett av fälten bör vara instance name. där skriver du bild eller nått annat som du tycker verka passande, Det är detta namn som kommer vara addressen till bilden.

Högerklicka på movieclipet välj actionscript.

I den stora rutan skriver du som följande:

 

onClipEvent(enterFrame)

{

_root.det instance name du gav bilden._x++;

}

 

tryck nu ctrl+Enter för att förhandsgranska.

 

 

Det här är bara en början, men jag tror du ska börja här och sen jobba vidare..

 

Jag tror att det ska funka, var ett tag sen jag kodade och har inte flash instalerat för tillfället.. men har du mer frågor eller problem så säg bara till..

 

Mvh A

 

Länk till kommentar
Dela på andra webbplatser

Det kommer inte att fungera med den koden.

 

Principen är att varje knapp anger en position som movieclippet förflyttar sig till.

 

Så lägga denna kod PÅ movieclippet.

 

onClipEvent(load){

// Initial position för movieclippet

_root.xpos=0;

}

onClipEvent(enterFrame){

// Flytta mc't snyggt till positionen som anges av variabeln xpos i rooten.

this._x+=(_root.xpos-this._x)/7;

}

 

Och på knapparna skriver du in positionen movieclippet ska åka till ( och stanna snyggt ).

 

on(release){

xpos=356;

}

 

 

Länk till kommentar
Dela på andra webbplatser

Tack båda för svaren..

 

Jag fick pellepianos att funka, även då det tog en del försök och en del mixtrande.. va lite knepigt med positionerna.. men hur fattar den att det är just det movieclipet jag vill ska flyttas? när man inte satt någon speciell direktiv från knapparna att just det movieclippet ska flyttas? kan det bli konflikter med andra movieclips sen?

 

Jag skulle också vilja att en swf fil laddas när man kommer till en av positionerna man väljer, att den så att säga börjar ladda när bilden rullat klart.. hur gör jag då??

Och så klart, hur gör jag för att en laddad swf fil ska försvinna när jag trycker på en annan knapp och movieclippet åker till en annan position, gör den det av sig själv?

 

vore väldigt tacksam för hjälp!

 

/E

 

Länk till kommentar
Dela på andra webbplatser

Det finns bara ett movieclip , och i det ligger alla bilderna bredvid varandra. Så det blir ingen konflikt.

 

Att ladda movieclips på det sätt du beskriver är knepigare. Först får man gör ett tomt movieclip som är till för att ladda in de externa filerna och ge det instansnamn som container tex.

 

Sen får man för varje knapp skapa en variabel som har samma värde som xpos.

 

Detta värde måste kollas konstant från tex "bild"movieclippets kod... typ...

 

if(math.round(this._x) == _parent.xpos){

_parent.container.loadMovie("nyFilm.swf");

}

 

...ungefär så. ( just detta exempel funkar inte dock eftersom den kommer att ladda in den externa filen för varje frame ).

 

 

Länk till kommentar
Dela på andra webbplatser

Det där gick inte så värst bra.. känns lite för svårt!

 

Funderade på om det finns något sätt att styra bild movieclippet med. Kanske med hjälp av "goto frame" t ex got frame 15 (så rullar bilden så att den passar nästa bild man vill visa) och på 15 så har man ett annat movieclip som börjar spela över bild movieclippet.

Skulle något i den stilen kunna funka, eller finns det något liknande??

 

Jag har som sagt fått det att funka när man sätter ett värde på knapparna, men skulle vilja att den laddar ett annat movieclip framför bild movieclippet, så att det händer någonting när bilden rullat klart..

 

vore igen tacksam för hjälp..

 

/E

 

Länk till kommentar
Dela på andra webbplatser

Enda sättet att veta när bilden rullat klart är att kolla x positionen, alternativt att låta det gå en fixerad tid innan man automatiskt laddar en swf efter knapptryckningen ( tiden det tar innan movieclippet stannar är ju generell , så länge det är samma avstånd mellan bilderna ).

 

Länk till kommentar
Dela på andra webbplatser

Det låter som en bra idé att starta en swf/movieclip efter en utsatt tid vid knapptryckning. Problemet är att jag inte har en blekaste hur jag ska sätta ett sådant script.

 

Jag är väldigt dålig koll när det kommer till ActionScripts.. Tacksam för svar..

 

/E

 

 

 

Länk till kommentar
Dela på andra webbplatser

Du kan tex på knappen skriva lägga till.......

 

_root.vadSkaLaddas="gallery.swf";

_root.minKonstigaTimer=1;

 

 

Och På movieclippet som scrollar lägga till

 

_root.minKonstigaTimer++;

if(_root.minKonstigaTimer==125){

_root.bildClip.loadMovie(_root.vadSkaLaddas);

}

 

 

...så bör typ gallery.swf laddas in i ett tomt movieclip i huvudtidslinen ( med instansnamn bildClip ) efter att 125 frames passerat. Öka den siffran om det går för fort.

 

( koden som ska ändras på varje enskild knapp är bara filnamnet på den swf du vill ska laddas in ).

 

Länk till kommentar
Dela på andra webbplatser

Har försökt ngr timmar nu utan att få det att funka.. Vet inte vad jag gör för fel. Men vet inte heller vad vissa saker betyder.

 

som t ex knapp scriptet _root.vadSkaLaddas="gallery.swf";

_root.minKonstigaTimer=1;

 

Vad ska jag skriva där du skrivit "vadSkaLaddas" och "minKonstigaTimer"?

Ska jag skriva något annat där? Vet inte om du orkar förklara ännu tydligare eller om du kanske har en aning om vad jag gör för fel. Kan inte det här med loadmovie så bra heller, är det något annat förutom det du tidigare skrev jag bör göra?

 

Går det möjligen att du skriver samma script som du gjort tidigare fast lägger in allting som ska vara med, att du hittar på färdiga namn för vad allt ska heta.. Kanske lite mycke begärt men vet inte hur jag ska få det att fungera.

 

mvh E

 

 

Länk till kommentar
Dela på andra webbplatser

_root.vadSkaLaddas="gallery.swf";

 

gallery.swf är namnet på den swf fil du vill ladda in efter en viss intervall ( när clippet stannar ).

 

Du ska bara ändra filnamnet ( gallery.swf ) till namnet på DIN fil ( imnga äandra ändringar behövs ). Har du många knappar ( som ska ladda en swf ) ändrar du filnamnet på dem också.

 

_root.minKonstigaTimer=1;

 

....är bara en variabel, vars värde ökar med 1, för varje frame. När den når en viss siffra laddas din swf in i det tomma movieclippet på huvudtidslinjen.

 

Det är ett enkelt sätt att mäta tid utan att använda den getTimer() functionen.

 

Det hela går ju ut på att ha ett delay ( som man bestämmer tiden på ) mellan knapptryckning och själva inladdningen av swf filen.

 

För att det här med loadMovie ska fungera behöver du bara ett tomt movieclip på huvudtidslinjen med VARIABEL namn bildClip ( och så att du har en extern swf fil med rätt namn som ligger i samma mapp ).

 

Länk till kommentar
Dela på andra webbplatser

Tror ni gör det onödigt svårt för er.

 

Så länge du vet hur många bilder swf:en innehåller är det ju bara att dela bredden med antalet för att få fram hur långt man ska flytta den.

 

Ett exempel (på hela skiten alltså):

 

grejen_mc är ett movieclip innehållandes en mask och det container_mc. Bilderna laddas till container_mc och maskas av masken utanför som har samma storlek som en bild. Viktigt är att registreringspunkten för både grejen_mc och container_mc är uppe till vänster.

 

koden skulle kunna se ut ungefär så här:

//sätt antalet bilder och startposition
antalBilder = 5;
xpos = 0;

ref = createEmptyMovieClip("load_mc", this.getNextHighestDepth());
ref.onEnterFrame = function() {

//Kollar om något är laddat till container och om det isf är färdigt
if (_root.grejen_mc.container_mc.getBytesLoaded()>=_root.grejen_mc.container_mc.getBytesTotal() && _root.grejen_mc.container_mc.getBytesTotal()>1) {
	//sätter onenterframe för container som gör att det glider så jävla snyggt
	_root.grejen_mc.container_mc.onEnterFrame = function(){
		this._x+=(xpos-this._x)/7;
	}
	//placerar ut en knapp för varje bild och sätter targpos på onPress funktionen. Om du redan har knappar utplacerade får du ändra den här
	for(i=0; i<antalBilder;i++){
		ref2 =_root.attachMovie("knapp_btn", "knapp"+i+"_btn", this._parent.getNextHighestDepth());
		ref2._x = i*10;
		ref2.targpos = -(_root.grejen_mc.container_mc._width/antalBilder)*i;
		ref2.onPress = function(){
			xpos = this.targpos;
		}
	}
}
};

//ladda bildswfen
_root.grejen_mc.container_mc.loadMovie("bilderna.swf")

 

Som du ser är det en for-loop som lägger ut knapparna från biblioteket. Det behöver inte vara så. Vet du hur många bilder du ska ha kan du ju placera ut knapparna manuellt innan. Det enda du behöver tilldela efter att du har laddat swf:en då är onPress-funktionen (tilldelar du innan det är laddad kommer inte _root.grejen_mc.container_mc._width stämma)

 

tex borde följande funka isf:

du har döpt dina knappar till knapp0, knapp1, knapp2 osv.

 

for(i=0; i<antalBilder;i++){
		eval("knapp"+i).onPress = function(){
			xpos = this.targpos;
		}
	}

 

Hoppas det hjälpte ;-)

 

 

Edit:

Kanske skulle förtydliga. Det enda du egentligen behöver göra nu för att få det att funka är att lägga koden i första framen, skapa knappar och movieclip + att sätta instansnamn på dom. Men det kan ju vara bra om du joxar runt lite med scriptet så du fattar hur det funkar.

[inlägget ändrat 2005-01-05 17:49:00 av Cechise]

Länk till kommentar
Dela på andra webbplatser

Tack för det snabba svaret!

Får det tyvärr inte att funka.. Har satt ett förekomstnamn ( bildClip ) på det tomma movieclippet som ligger på huvudtidslinjen i ett eget lager..

 

I knappen ser det ut så här:

 

on (release) {

xpos = 275;

}

on (release) {

_root.vadSkaLaddas = "flip.swf";

_root.minKonstigaTimer = 1;

}

 

 

Och i det rullande movieclipet ser det ut så här:

 

onClipEvent (load) {

// Initial position för movieclippet

_root.xpos = 825;

}

onClipEvent (enterFrame) {

// Flytta mc't snyggt till positionen som anges av variabeln xpos i rooten.

this._x += (_root.xpos-this._x)/4;

}

onClipEvent (load) {

_root.minKonstigaTimer++;

if (_root.minKonstigaTimer == 125) {

_root.bildClip.loadMovie(_root.vadSkaLaddas);

}

}

 

 

Ser du något konstigt, eller är det bara jag som borde hålla på med något annat..

 

Länk till kommentar
Dela på andra webbplatser

En del av koden ska ligga in enterFrame i stället för load....

 

// Kod på movieclippet

onClipEvent (load) {

// Initial position för movieclippet

_root.xpos = 825;

}

onClipEvent (enterFrame) {

// Flytta mc't snyggt till positionen som anges av variabeln xpos i rooten.

this._x += (_root.xpos-this._x)/4;

_root.minKonstigaTimer++;

if (_root.minKonstigaTimer == 125) {

_root.bildClip.loadMovie(_root.vadSkaLaddas);

}

}

 

 

Kolla oxå Cechise exempel som verkar mer genomtänkt ( fiffigare kod ser det ut som ).

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

finally.. det funkade, man tackar..

en till grej bara.. jag har satt så att en annan .swf fil laddas när man trycker på en annan knapp.. det funkar men under den tid det tar för movieclippet att rulla till sin position så fortsätter den första laddade .swf filen att spela ända tills den nya börjar..

 

hur gör man för att den ska ta bort den första laddade swf:en så fort man tryckt på en annan knapp?

 

 

Länk till kommentar
Dela på andra webbplatser

Lögg till....

 

_root.bildClip.unloadMovie();

 

....till knapp koden så ska det nog funka....

 

 

on (release) {

xpos = 275;

_root.vadSkaLaddas = "flip.swf";

_root.minKonstigaTimer = 1;

_root.bildClip.unloadMovie()

}

 

 

Länk till kommentar
Dela på andra webbplatser

tack för svaret.. nice

 

förökte sätta in den, men mitt flash säger att det e massa fel på scriptet, försökt fixa det som den säger är fel men lyckas inte.. vore rätt nice å testa!

 

Länk till kommentar
Dela på andra webbplatser

hmm

 

va får du för fel?

 

testade copy-paste. Det enda som inte stämde var att det blev en radbrytning i första if-satsen. tog bort den å då funkade det

 

 

 

[inlägget ändrat 2005-01-06 02:23:32 av Cechise]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...