webForumDet fria alternativet

Ladda in bild från Library i movieclip

Flash

8 svar · 653 visningar · startad av mollemus

Medlem sedan jan. 200833 inlägg
Frågan#1

Hej,

här kommer en ganska vanlig fråga kanske, men hittade inte något
svar för alla snackar om att ladda in bilder från externa källor.

Om jag har ett movieclip på stagen och vill att movieclipet ska ladda
in en bild som finns i mitt Library så antar jag att jag använder Linkage på
bilden och skriver in ett namn i identifier. Sen så använder jag attachMovie,
men får det inte att funka. Har skrivit så här:

mc.attachMovie("bildnamn"); där bildnamn är identifier-namnet på bilden i
Libraryt. För jag vill inte klona upp bilden som man kan använda attachMovie
till annars.

Tack!

Medlem sedan maj 2005704 inlägg
#2

Hjälpfilerna innehåller syntax för alla funktioner, så ett hett tips är att kolla in dem.

myMovieClip.attachMovie( idName , newName , depth [, initObject ] )

Medlem sedan jan. 200833 inlägg
#3

Självklart har jag kollat in hjälpfilerna innan jag postade här, kollar dem jämt, men skriver jag in newname så skapas det en kopia av bilden, vilket inte är effekten jag vill ha. Jag vill att ett mc som finns på stagen ska få bilden inladdad i sig.

Medlem sedan maj 2005704 inlägg
#4

Ok, jag hänger inte riktigt med på din terminologi.
"inladdad" innebär för mig att bilden laddas in, d.v.s. ligger externt och hämtas in i den swf med t.ex. MovieClipLoader.
"kopieras" innebär för mig att du skapar en instans av ett objekt som redan finns i din swf. Antingen om det finns på scenen genom duplicateMovieClip, eller om den finns i library genom attachMovie.

Jag kan inte föreställa mig något exempel på en situation där man behöver ladda in en resurs som finns i ditt library och därmed redan är inladdad.
Beskriv lite utförligare vad det är för effekt du vill ha, jag kan garantera att det går att åstadkomma med attachMovie eller MovieCliploader/loadMovie.

Medlem sedan maj 2003750 inlägg
#5

För att "ladda in" en bitmapbild som ligger i biblioteket och är "länkat för actionscript" så skall du använda bitmapData objektet och filmklippets metod "attachBitmap".

import flash.display.BitmapData;

// loadBitmap hämtar en länkad bitmapbild från biblioteket.
var bmp = BitmapData.loadBitmap("bild");

// Placera in bitmapen i filmklippet.
filmklipp.attachBitmap(bmp, 1);

/Mirandir

Medlem sedan maj 2005704 inlägg
#6

mirandir skrev:

För att "ladda in" en bitmapbild som ligger i biblioteket och är "länkat för actionscript" så skall du använda bitmapData objektet och filmklippets metod "attachBitmap".

På vilket sätt är det "ladda in" istället för att skapa en kopia?

attachBitmap skapar en instans av bilden precis som attachMovie.
Enda skillnaden är att det är ett objekt av typen bitmap och hur man måste gå tillväga för att referera till objektet.

Så länge man inte behöver kunna manipulera bilden som ett bitmapsobjekt, vad det skulle vara för fördel med att instantiera bilden som en bitmap?

Medlem sedan jan. 200833 inlägg
#7

Jag ska förklara vad det är jag försöker göra, men jag tror mirandir har rätt, men får inte koden att funka.

Jag har en bil som man ska kunna byta delar på. Delarna är bilder som man kan flytta med musen (drag and drop). Bilen är ett movieclip som innehåller flera movieclip, ett för skalet, ett för hjulen osv. När man släpper en bildel på bilen så byts grafiken på bilens del ut. Bilderna är inladdade redan i biblioteket så jag vill att t.ex bilen.hjul ska byta grafik till hjul2.png i Libraryt.

Testat följande:

var bmp = BitmapData.loadBitmap("hjul2.png");

bilen.hjul1.attachBitmap(bmp, 1);

Raden import flash.display.BitmapData; har jag placerat i första framen men man kanske måste ha det i samma skript som detta anropas.

Medlem sedan maj 2005704 inlägg
#8

Ok, jag tror jag förstår vad ditt problem är.
Om du använder attachMovie så ersätter inte bilden ditt mc utan lägger sig i ett lager ovan. Med attachBitmap så händer samma sak även om det kan förefalla som att så inte är fallet för att man inte anger ett namn för ett nytt mc som med attachMovie. Istället refererar man till objektet med pekaren som skapades vid loadBitmap kommandot.

Om det är ett problem att originaldelarna fortfarande ligger kvar i bakgrunden skulle jag ladda dem i tomma "containers" med AS då applikationen startar.
Sedan är det bara att ladda in i samma clip och djup då du byter del.
Något i stil med detta:

// ladda den förvalda designen då applikationen först laddar
bil.hjul1.attachMovie("hjul1", "holder", 1);

// kod för att byta ut hjuldesign
bil.hjul1.attachMovie("hjul2", "holder", 1);

Om du kör med attachBitmap slipper du lägga in dina .png's i ett mc då du lägger in dem i biblioteket, annars är principen densamma.
import måste ligga i samma scope som koden där du vill använda klassen.

Medlem sedan jan. 200833 inlägg
#9

Fick det att funka med koden du gav mig Blixtsystems! Tack så mycket för hjälpen båda två!

334 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
206 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)