Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155

    [as3] Proprietà tramite XML

    Salve ragazzi!
    Per fortuna è da un po' che non scrivo qui, però questo problema non so proprio come risolverlo...
    Questo è il quadro della situazione: vorrei fare in modo che flash prenda le proprietà degli oggetti da un XML, in modo da poter cambiare la skin del filmato a piacimento.
    Solo che non funziona! Non fa errori, però nemmeno imposta le proprietà!
    Ecco il mio codice:
    Codice PHP:
    var Testo:TextField = new TextField();
    Testo.text 'ciao';
    addChild(Testo);

    var 
    Xml:XML 
        <
    Xml>
            <
    Testo>
                <
    Selectable>false</Selectable>
            </
    Testo>
        </
    Xml>
    ;

    Testo.selectable Xml.Testo.Selectable
    In questo modo il testo non dovrebbe essere selezionabile... eppure...

    Spero proprio che sappiate come aiutarmi! GRAZIE!!

  2. #2
    non puoi passare una stringa come boolean

    devi fare un

    var siNo:Boolean=Xml.Testo.Selectable as Boolean

    oppure

    var siNo:Boolean=Boolean(Xml.Testo.Selectable );

    questo in as3

    in as2....boh?
    Photogallery Flash Gratis - http://www.flashfiles.biz -
    Template in Flash con pannello di Amministrazione e deeplinking Guarda il template qui

  3. #3
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Grazie per la dritta...
    Io avevo provato anche di mio con il secondo modo e non funzionava, funziona solo con il primo metodo

    Grazie mille ancora!

  4. #4
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Purtroppo sono ancora qui con un altro problema: funziona solo con selectable!!! Gli altri non funzionano, e il testo si nasconde! (Sono un po pirla, ma non così tanto da mettere tutti come boolean!)
    Ecco il codice intero:

    Codice PHP:
    var Testo:TextField = new TextField();
    var 
    TestoTextFormat:TextFormat = new TextFormat();

    var 
    Xml:XML 
        <
    Xml
            <
    Testo>
                <
    Alpha>1</Alpha>
                <
    AutoSize>left</AutoSize>
                <
    Background>true</Background>
                <
    BackgroundColor>0x000000</BackgroundColor>
                <
    Border>true</Border>
                <
    BorderColor>0x000000</BorderColor>
                <
    Height>20</Height>
                <
    Multiline>false</Multiline>
                <
    Rotation>0</Rotation>
                <
    Selectable>false</Selectable>
                <
    Visible>true</Visible>
                <
    Width>240</Width>
                <
    x>50</x>
                <
    y>25</y>
                
                <
    Align>left</Align>
                <
    BlockIndent>0</BlockIndent>
                <
    Bold>true</Bold>
                <
    Bullet>false</Bullet>
                <
    Color>0xFFFFFF</Color>
                <
    Font>Courier New</Font>
                <
    Indent>0</Indent>
                <
    Italic>false</Italic>
                <
    Leading>0</Leading>
                <
    LeftMargin>0</LeftMargin>
                <
    LetterSpacing>0</LetterSpacing>
                <
    RightMargin>0</RightMargin>
                <
    Size>14</Size>
                <
    Underline>false</Underline>
            </
    Testo
        </
    Xml


    Testo.alpha Xml.Testo.Alpha as Number;
    Testo.autoSize Xml.Testo.AutoSize as String;
    Testo.background Xml.Testo.Background as Boolean;
    Testo.backgroundColor Xml.Testo.BackgroundColor as uint;
    Testo.border Xml.Testo.Border as Boolean;
    Testo.borderColor Xml.Testo.BorderColor as uint;
    Testo.height Xml.Testo.Height as Number;
    Testo.multiline Xml.Testo.Multiline as Boolean;
    Testo.rotation Xml.Testo.Rotation as Number;
    Testo.selectable Xml.Testo.Selectable as Boolean;
    Testo.visible Xml.Testo.Visible as Boolean;
    Testo.width Xml.Testo.Width as Number;
    Testo.Xml.Testo.as Number;
    Testo.Xml.Testo.as Number;

    TestoTextFormat.align Xml.Testo.Align;
    TestoTextFormat.blockIndent Xml.Testo.BlockIndent as Object;
    TestoTextFormat.bold Xml.Testo.Bold;
    TestoTextFormat.bullet Xml.Testo.Bullet;
    TestoTextFormat.color Xml.Testo.Color;
    TestoTextFormat.font Xml.Testo.Font;
    TestoTextFormat.indent Xml.Testo.Indent;
    TestoTextFormat.italic Xml.Testo.Italic;
    TestoTextFormat.leading Xml.Testo.Leading;
    TestoTextFormat.leftMargin Xml.Testo.LeftMargin;
    TestoTextFormat.letterSpacing Xml.Testo.LetterSpacing;
    TestoTextFormat.rightMargin Xml.Testo.RightMargin;
    TestoTextFormat.size Xml.Testo.Size;
    TestoTextFormat.underline Xml.Testo.Underline;

    Testo.defaultTextFormat TestoTextFormat;
    Testo.text 'ciao'
    addChild(Testo); 
    E poi esce un output che recita:
    Il valore del parametro autoSize deve essere diverso da null.
    Però non è null, ed è una stringa come dice la guida ad as3 della adobe...

    Grazie ancora e (mi ero dimenticato) AUGURI!!

  5. #5
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Rispondetemi please

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    18
    ciao,

    ... dovresti effettuare il custom non utilizzare l'operatore as. L'operatore as ha un significato, fare il custom è altra cosa.


    Dalla guida di CS3 :
    Valuta se un'espressione specificata dal primo operando è un membro del tipo di dati specificato dal secondo operando.
    Se il primo operando è membro del tipo di dati, il risultato è il primo operando, altrimenti, il risultato è il valore >>> null. <<<
    L'espressione utilizzata per il secondo operando deve restituire un tipo di dati.

    es.
    var pippo:String = "12345";
    trace(pippo as Number); // e' null!
    ... ha verificato prima se la variabile pippo e' del tipo Number, ... non lo e'! e quindi ritorna null.

    mentre scrivendo :
    trace(pippo as String); // ritorna 12345

    se invece effettuo il custom :
    trace(Number(pippo)); // 12345
    ... viene effettuata la conversione in Number del contenuto di pippo

    ... ma non funziona per la conversione da String a Boolean; le stringhe "true" e "false" non sono riconosciute e convertite.

    scrivendo :
    trace(Boolean("false")); o
    trace(Boolean("true"));
    ottieni si un Boolean, ma sempre con valore true

    il valore 0 e' invece convertito come false
    trace(Boolean(Number("0"))); // false
    trace(Boolean(Number("1"))); // true

    potresti scrivere 0 e 1 invece di false e true, o meglio, utilizzare una semplice funzione
    di conversione da String a Boolean.


    ... così dovrebbe funzionare
    codice:
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.text.TextFieldType; 
    import flash.text.TextFieldAutoSize;
    
    var Testo           :TextField  = new TextField(); 
    var TestoTextFormat :TextFormat = new TextFormat(); 
    
    var Xml:XML = 
        <Xml> 
            <Testo> 
                <Alpha>1</Alpha> 
                <AutoSize>left</AutoSize> 
                <Background>true</Background> 
                <BackgroundColor>0x000000</BackgroundColor> 
                <Border>true</Border> 
                <BorderColor>0x000000</BorderColor> 
                <Height>20</Height> 
                <Multiline>false</Multiline> 
                <Rotation>0</Rotation> 
                <Selectable>false</Selectable> 
                <Visible>true</Visible> 
                <Width>240</Width> 
                <x>50</x> 
                <y>25</y> 
    			
                <Align>left</Align> 
                <BlockIndent>0</BlockIndent> 
                <Bold>true</Bold> 
                <Bullet>false</Bullet> 
                <Color>0xFFFFFF</Color> 
                <Font>Arial</Font> 
                <Indent>0</Indent> 
                <Italic>false</Italic> 
                <Leading>0</Leading> 
                <LeftMargin>0</LeftMargin> 
                <LetterSpacing>0</LetterSpacing> 
                <RightMargin>0</RightMargin> 
                <Size>14</Size> 
                <Underline>false</Underline> 
            </Testo> 
        </Xml>; 
    
    
    Testo.alpha           = Number(Xml.Testo.Alpha); 
    Testo.autoSize        = String(Xml.Testo.AutoSize); 
    Testo.background      = StrToBoolean(Xml.Testo.Background); 
    Testo.backgroundColor = uint(Xml.Testo.BackgroundColor); 
    Testo.border          = StrToBoolean(Xml.Testo.Border); 
    Testo.borderColor     = uint(Xml.Testo.BorderColor); 
    Testo.height          = Number(Xml.Testo.Height); 
    Testo.multiline       = StrToBoolean(Xml.Testo.Multiline); 
    Testo.rotation        = Number(Xml.Testo.Rotation); 
    Testo.selectable      = StrToBoolean(Xml.Testo.Selectable); 
    Testo.visible         = StrToBoolean(Xml.Testo.Visible); 
    Testo.width           = Number(Xml.Testo.width); 
    Testo.x               = Number(Xml.Testo.x); 
    Testo.y               = Number(Xml.Testo.y); 
    
    TestoTextFormat.align         = String(Xml.Testo.Align); 
    TestoTextFormat.blockIndent   = Number(Xml.Testo.BlockIndent); 
    TestoTextFormat.bold          = StrToBoolean(Xml.Testo.Bold); 
    TestoTextFormat.bullet        = StrToBoolean(Xml.Testo.Bullet); 
    TestoTextFormat.color         = Number(Xml.Testo.Color); 
    TestoTextFormat.font          = String(Xml.Testo.Font); 
    TestoTextFormat.indent        = Number(Xml.Testo.Indent); 
    TestoTextFormat.italic        = StrToBoolean(Xml.Testo.Italic); 
    TestoTextFormat.leading       = Number(Xml.Testo.Leading); 
    TestoTextFormat.leftMargin    = Number(Xml.Testo.LeftMargin); 
    TestoTextFormat.letterSpacing = Number(Xml.Testo.LetterSpacing); 
    TestoTextFormat.rightMargin   = Number(Xml.Testo.RightMargin); 
    TestoTextFormat.size          = Number(Xml.Testo.Size);
    TestoTextFormat.underline     = String(Xml.Testo.Underline); 
    
    Testo.defaultTextFormat = TestoTextFormat;
    Testo.text = 'ciao';
    addChild(Testo);
    
    
    // ..............................................
    //   FUNCTION : StrToBoolean() 
    //              converte da String a Boolean
    // ..............................................
    function StrToBoolean(p_string:String):Boolean
    {
        var retValue:Boolean = false;
        switch (p_string) 
        { 
            case "true"   : retValue = true;
                            break;
    
            case "false"  : retValue = false;
                            break; 
    	}
    	return retValue;
    }
    // ..............................................

  7. #7
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Grazie mille!! L'ho provato e funziona! Scusate la mia ignoranza.... Grazie ancora!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.