Avatar billede mobius6 Juniormester
18. december 2004 - 20:24 Der er 8 kommentarer og
1 løsning

Flash MX (wordlist / fake 3D text script?

Hej E's

Jeg fandt denne opensource (levitated.net)
jeg vil gerne lave fulde sætninger istedet for enkelt ord som denne fil er konstrueret til, jeg kan sgi bare ikke lure hvordan :-/

Er der noget der har et bud på hvordan jeg får indelt linjen:
//this.somewords = "wind breeze storm stormy tornado text space three dimensional infinite recursive instance object distort environmental atmospheric blow gush whoosh thrash whirl push roar rush caress flow swoop";
// convert the string of words into an array of words
this.wordList = new Array();
this.wordList = this.somewords.split(" ");

til fx:
1: hvorfor denne sætning? - fordi denne sætning!!!
2: Er dette et nyt "afsnit"? JA! det r et nyt afsnit!!

som den er nu deler den selv ordene ved mellemrum
kunne man fx få den til at dele ved , (komma) i stedet ???

osv osv.
Filen kan hentes her: http://medlem.jubii.dk/mobius6/levTextSpace.fla

fuldt script her:
// register root as environment
Object.environment = this;

// create camera object
this.cam = {x:0, y:0, z:500, dx:0, dy:0, dz:-500};

// set environmental constants
this.fl = 1000;

// create 'space' to which all words will be attached
this.createEmptyMovieClip("space",1);
// center 'space' on the stage
space._x=300;
space._y=169;

// a string of words related to the wind
this.somewords = "wind breeze storm stormy tornado text space three dimensional infinite recursive instance object distort environmental atmospheric blow gush whoosh thrash whirl push roar rush caress flow swoop";
// convert the string of words into an array of words
this.wordList = new Array();
this.wordList = this.somewords.split(" ");

// create one instance for each word in the list
for (n=0;n<this.wordList.length;n++) {
    // pick a word from the list
    var word = Object.environment.wordList[n];
    var x = random(600)-300;
    var y = random(337)-169;
    var z = random(Object.environment.fl*2)-Object.environment.fl;
   
    // create an instance of the SpaceWord object
    nombre = "word"+String(depth++);
    initialization = {txtword: word, x: x, y: y, z: z};
    space.attachMovie("spaceWord", nombre, depth, initialization);
}

this.onEnterFrame = function() {
    this.cam.dz+=.5;
    // move the camera to its destination
    this.cam.x+=(this.cam.dx-this.cam.x)/10;
    this.cam.y+=(this.cam.dy-this.cam.y)/10;
    this.cam.z+=(this.cam.dz-this.cam.z)/30;
}

stop();
Avatar billede barklund Nybegynder
18. december 2004 - 20:35 #1
Så det du gerne vil ændre er, at man ikke kun kan give sit input som

this.somewords = "ord1 ord2 ord3";

Men også kan skrive ting som:

this.somewords = "ord1 (ord2), ord3.ord4";

Så alt, der ikke er tal eller bogstaver i praksis bare er mellemrum mellem ord?

--
Morten Barklund
Avatar billede mobius6 Juniormester
18. december 2004 - 20:41 #2
jep, helt konkret:

erstatte fx de ordet "wind" (fra scriptet) med
"hej dette er et spørgsmål?
(linjeskift) ja og dette er svaret"

næste ord "breeze" erstattes med
"dette er spørgsmål 2"
(linjeskift)jep og her er svartet til 2"

hvert ord som i originall scriptet blot er et enklet ord bliver til hele sætninter (med et enkelt linjeskift)

Så alt, der ikke er tal eller bogstaver i praksis bare er mellemrum mellem ord?
= er HELT KORREKT :)
Avatar billede barklund Nybegynder
18. december 2004 - 21:00 #3
Ah, nu forstår jeg. Jamen så laver vi bare et nyt tegn, som adskiller "ord" - for eksempel |, $, ¤ eller tilsvarende tegn, du ikke lige ellers bruger:

this.somewords = "hej dette er et spørgsmål?\nja og dette er svaret¤dette er spørgsmål 2?\njep og her er svartet til 2";
this.wordList = this.somewords.split("¤");

Så skulle resten virke fint - bare du sikrer dig at dit tekstfelt er stort nok og har to linjer :)

--
Morten Barklund
Avatar billede mobius6 Juniormester
18. december 2004 - 21:09 #4
allrighty, makes sense!
jeg prøver det lige af ;)
Avatar billede mobius6 Juniormester
18. december 2004 - 21:19 #5
storartet, det virker perf (selv med optil 10-12 linjer ;)

Tanx! :) smid et svar
Avatar billede mobius6 Juniormester
18. december 2004 - 21:32 #6
tillægsspørgsmål:

hvor svært er det at lave en ny funktion?
som den er nu "springer" hvert "spaceword" på klik
hvad skal der til for at lave en funktion hvor man kan "dragge" hele systemet på "mousedown" altså uden de "springer"..det skal de først på "release"

lidt fjollet funktion men ville være rigtigt fint til det jeg sidder med...
Avatar billede barklund Nybegynder
18. december 2004 - 23:57 #7
Åben movieclippet SpaceWord i dit library og erstat det eksisterende script med dette:

#initclip
// constructor
function SpaceWord() {
    // set up button functionality
    this.btnSquare.onPress = function() {
        this._parent.dragging = true;
        // copy current pos
        this._parent.start_x = Object.environment._xmouse;
        this._parent.start_y = Object.environment._ymouse;
    };
    // set up button functionality
    this.btnSquare.onRelease = this.btnSquare.onReleaseOutside = function() {
        this._parent.dragging = false;
        // push the camera towards the word by setting destination just a bit in front
        Object.environment.cam.dx = this._parent.x;
        Object.environment.cam.dy = this._parent.y;
        Object.environment.cam.dz = this._parent.z+Object.environment.fl*.9;
        // disable and hide button
        this.enabled = false;
        this._visible = false;
    };
    // set continual function to render word
    this.onEnterFrame = this.render;
}
// allow SpaceWord to inherit MovieClip properties
SpaceWord.prototype = new MovieClip();
// instance methods
SpaceWord.prototype.render = function() {
    var zActual = Object.environment.fl+this.z-Object.environment.cam.z;
    // has the object moved behind the camera?
    if (zActual>0) {
        // object is still visible
        // calculate scale
        var scale = Object.environment.fl/zActual;
        // set position using camera as an offset
        this._x = (this.x-Object.environment.cam.x)*scale;
        this._y = (this.y-Object.environment.cam.y)*scale;
        // set size
        this._xscale = scale*100;
        this._yscale = scale*100;
        // set fog
        this._alpha = 100 - 99 * zActual/Object.environment.fl*.5;
    } else {
        // object has moved behind camera
        // reposition further down the line
        this.z += Object.environment.fl*2;
       
        // enable button
        this.btnSquare.enabled = true;
        this.btnSquare._visible = true;
    }
    if (this.dragging) {
        Object.environment.cam.dx -= _root._xmouse-this.start_x;
        Object.environment.cam.dy -= _root._ymouse-this.start_y;
        this.start_x = Object.environment._xmouse;
        this.start_y = Object.environment._ymouse;
    }
};
SpaceWord.prototype.setWord = function(s) {
    this.txtWord = s;
};
SpaceWord.prototype.setPosition = function(x, y, z) {
    this.x = x;
    this.y = y;
    this.z = z;
};
// Connect the class with the linkage ID for this movie clip
Object.registerClass("spaceWord", SpaceWord);
#endinitclip

Du får også lige et svar ;)
Avatar billede mobius6 Juniormester
19. december 2004 - 00:21 #8
super nice!, præcist hvad jeg søgte!!
mange TAK!  :)
Avatar billede barklund Nybegynder
19. december 2004 - 01:05 #9
Så lidt - og tark for points :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester