14. januar 2004 - 04:45Der er
62 kommentarer og 2 løsninger
Elastisk X bevægelse på Tekstfelt
Nedenstående script placerer et dymasisk tekstfelt (Description) på X/Y koordinator. Mit spørgsmål er, om det ud fra disse koordinator (_x / _Y) er muligt, elastisk at bevæge dette tekstfeltet fra højre mod ventre og tilbage igen i en glidende bevælgelse. Der ønskes en funktion/bevælgelse som denne: http://www.tomter.net (klik Portfolio og bemærk den ønskede bevægelse på selve billedteksten/billedtekstfelt)
N.B: Koordinatorne loades fra extern .txt fil, med LoadVar funktion. Denne er ikke er vist, da kun "function handler" er det relevante i dette spørgsmål.
Mener du en easing som i en motion tween eller en egentlig elastisk bevægelse som du selv bevæger dig i et elastikspring - jeg er ikke helt med på, hvad du ønsker (men det kan sikkert lade sig gøre :)
Tror sagtens det kan laves som en ease in/ease out ligende bevælge, men prøv at se på linket: http://www.tomter.net. Det er meget li' bevægelse på denne side, jeg ønsker.
Fortstår du? Jeg har lavet bevælgelsen manuelt ved at flytte tekstfeltet 2px til højre, med en motiontween over 3 frames, og efterfølgene flytte tekstfeltet 2px til venstre, over 5 frames med Ease -100. Det ser perfekt ud. Nu er spørgsmålet bare om dette kan scriptes, og at nulpunktet hvorfra tekstfeltet skal bevæge sig kan baseres på de X/Y koordinator der hentes in fra .txt fil.
Sorry! På linket skal du klikke på menupunktet: Portfolio. Nu skulle første billede gerne slide ind. Vælg herefter mellem (1, 2, 3, etc.) i den yderste talrække. Det der skal bemærkes er den vertikale billedtekst til højre for selve billedet. Det er denne/el. ligende elastisk/ease bevægelse, jeg er ude efter at scripte til at fungerer med mit tekstfelt "Description" (Se ovenstående).
Hmm.. får det ikke helt til at virke. Hele mit nuværende script ser sådan ud: Dit script skulle gerne integreres i dette.
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = 'content/thesevendeadlysins/images/'+num+'.jpg'; } setString(num); l = new LoadVars(); l.load(u); l.onLoad = handler;
altså jeg har ikke lavet noget sådan at man præcist kan bestemme hvor meget teksten rykker sig - men man kan intaste startfarten og accelerationen (eller deaccelerationen) - men jeg kan godt lave det??
Nej.. helt super! Har fået den tilpasset nu. Men når jeg Klikker mit "Fremad" knap for at bladre frem, og dermed Loade næste billede og tekst, da aktiveres din function ikke.
Bruger dette på FORWARD knap: on (release) { if (num < max) { num += 1; setString(num); l.load(u); } else if(num == max) { num = 1; setString(num); l.load(u); } }
Er billedteksten en lækker detalje, der ligger i forlængelse af selve billedets slide in bevægelse. (Som vel bare er et hvidt layer der trækkes over billedet?) Vil man kunne scripte sig ud af denne transition også? Jeg har f.eks. et MovieClip (ImageHolder) hvortil mine JPG billeder blir loadet. Og billedteksten loades (som sagt) til "Description" (DTF) Tekstfeltet.
Kun man f.eks. lægge et MovieClip med en hvid blok, på et seperart layer over det layer hvorpå ImageHolder movieClip ligger. Og da med Actionscript "scale" dette MovieClip med hvid boks hen over billedet på layer nedenunder?
Jo sagtens - det er nok bedst at bruge mask-layers egentligt. Lav et MC med bredde og højde som et billede - farven en ligegyldig. Smid dette i et masklayer over "ImageHolder" så "ImageHolder" er masket - dette MC kan du så bare skalere med:
Virker fint nok, men den skulle gerne kører funktionen ved onLoad også. Altså fra start for første billede, før der klikkes videre til det næste, med "Forward" knap, hvorpå jeg har tilføjet denne: elasticMove(1, 0.2);
Men der er et problem med at den ene funktion ikke kan køre sammen med den anden og vica versa. elasticMove virker fint alene og det samme gør viewImage. Men køres de samtidig, udelukker den ene den anden. Mit script ser nu således ud:
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = 'content/thesevendeadlysins/images/'+num+'.jpg'; } setString(num); l = new LoadVars(); l.load(u); l.onLoad = handler;
elasticMove(1, 0.2); viewimage(10); // NOGET GÅR GALT HER, NÅR DENNE KØRES SAMTIDIG MED elasticMove } stop();
P.S. En lille ting (nu det er kommet såvidt). Hvordan sikre man at elasticMove ikke køres før viewImage er slided færdigt? Altså således at elasticMovie køres lige i forlængelse af viewImage.
Forstå heller ik (øv! har ellers prøvet) Hvordan jeg undgår at teksten loades og fremtræder synlig i Description tekstfelt, før elasticMovie kaldes. Dette skulle jo helst ske i samme sekund som elasticMovie kaldes. Skal jeg vise samlet script? (igen)?
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = 'content/thesevendeadlysins/images/'+num+'.jpg'; } setString(num); l = new LoadVars(); l.load(u); l.onLoad = handler;
JAJAJA! :) næsten.. Nu virker det super med slidein og elastic billedtekst. Men der er et problem med setInterval. Den viser intet nu, heller ik' om interval sættes til 1. Resten af scriptet virker perfect som det ser ud her: (har fjernet de 2 linjer for setInterval function... hvad kan der være galt?)
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = 'content/thesevendeadlysins/images/'+num+'.jpg'; } setString(num); l = new LoadVars(); l.load(u); l.onLoad = handler;
Hmm.. mærkelig. Mig der gør noget galt? Virker ikke her. Samlet ser det sådan her ud:
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = 'content/thesevendeadlysins/images/'+num+'.jpg'; } setString(num); l = new LoadVars(); l.load(u); l.onLoad = handler;
Udskrifter jeg viewImage(15); med: timer = setInterval(viewImage,1000,10); da viser den hvidt/blank (som den jo egentlig skal), men kommer aldrig videre derfra.
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = 'content/thesevendeadlysins/images/'+num+'.jpg'; } setString(num);
num = 1; max = 4; function setString(num) { u = 'content/thesevendeadlysins/text/'+num+'.txt'; i = ''+num+'.jpg'; } setString(num); function viewImage(speed) { trace(speed);
Når jeg bladre frem, viser den billedet pang!!, og kører da viewImage henover det synlige billede. setInterval blir helt overuled. Blir ikke rigtigt klogere af det trace.
Sætter jeg handler() på Forward knappen så laver den en slags looper!!
Hvis du så skifter billede burde du få smidt en: "billedet hentes" i hovedet - hvis ikke så er der noget gruligt galt!!!
Forresten - hvis det trækker meget mere ud så må du nok oprette et nyt spørgsmål, så der kan komme flere med - desuden tror jeg at både du og Nikolaj er trætte - i har jo slet ikke fået sovet i nat :)
Hehe! JA-- nikolajdu er helt pjattet med natteflash. Det træk ikke længere ud end hertil. Men nu er alt også helt perfekt. Jeg har overført det endelige script til dette spørgsmål:
Jo men jeg skulle da lige have noget at spise. Faktisk har jeg stort set ikke sovet andet end de timer de sidste par dage da hoste,nysen,frysen og alt det pjat har holdt mig vågen. Nåja og så ikke at forglemme spændingen ved at se udviklingen i det her spørgsmål.
Nikolaj der findes vist nok specielle centre for sådan nogle som dig... du kan stadig komme på eksperten - og det er sikkert sjovere med 15 mg morfin i blodet ;)
Fortsæt det gode arbejde styrmand - så kan det være du kan slå en kinesisk minearbejders arbejdstid...
Hvad hvis der forekommer GIF billeder der også skal loades? Skal man fast angive at der er tale om enten JPG eller GIF her: i = 'content/thesevendeadlysins/images/'+num+'.jpg'; !?!
Eller kan man lige lave DOS tricket med /'+num+'.*'; !?! :)
Men jeg blir nødt til at preloade det JPG billede, ellers vil både elasticMove og viewImage være afspillet inden selve billedet kommer til syne. Jeg forestille mig at skulle Preloade mit ImageHolder MC. Men hvor lægger jeg en Preloader, så jeg undgår ovenstående? Og hvordan ser en sådan preloader ud?
if (frame > 100) { frame = 100; } if (loadedbytes == totalbytes) { // this takes you to the next scene gotoAndPlay(5); }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.