Probleme de caracters speciaux dans flash

simojava Messages postés 5 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 9 août 2006 - 5 août 2006 à 00:21
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 - 5 août 2006 à 12:03
bonjour tout le monde,

J'ai codé une classe en AS qui charge tous les caracteres speciaux et les affiche dans un MovieClip.
Le probleme est que certains caracteres ne s'affichent pas mais plutot un carre s'affiche a la place.
C peut etre un prob d'encodage, mais je ne sais pas commenet m'y prendre.
j'ai essaye avec la methode embedFonts mais tjrs rien
Kelkun aurait une idee?

Voici ma classe, pour la tester creez un MovieClip vide et appeler la methode drawTable(x:Number, y:Number).

Si vous avez une solution veuillez svp me la communiquer.
Merci d'avance

class SpecialChar extends MovieClip {

    private static var box_size = 25;
    private var symbol:Array;
    private var table:MovieClip;
    private var xt, yt:Number;
    private var xpos, ypos:Number = 0;
    public var ourformat:TextFormat;

    /*
    /Constructor
    */
    public function SpecialChar() {
    }

    /*
    / Drawing small boxes wich will contain the characters
    */

    private function box(clip:MovieClip, x:Number, y:Number, s:String):Void {
        clip.lineStyle(1, 0x8000ff, 100);
        clip.moveTo(x, y);
        clip.lineTo(x+SpecialChar.box_size, y);
        clip.lineTo(x+SpecialChar.box_size, y+box_size);
        clip.lineTo(x, y+SpecialChar.box_size);
        clip.lineTo(x, y);
        var tf:TextField = clip.createTextField("txtfld", clip.getNextHighestDepth(), x, y, 25, 25);
        tf.text = s;
        //tf.embedFonts = true;
        ourformat=tf.getTextFormat();
        ourformat.font = "Times New Roman";
        ourformat.size = 12;
        ourformat.bold = true;
        ourformat.align = "center";
        ourformat.color = 0x000000;
        tf.setTextFormat(ourformat);
    }
    /*
    / Get the symbol corresponding to the given codes
    */
    private function getSymbol():Void {
        this.symbol = new Array();
        for (var i = 0; i<255; i++) {
            this.symbol.push(String.fromCharCode(i));
        }
    }
    private function drawTable(x:Number, y:Number):Void {
        this.getSymbol();
        this.table = this.createEmptyMovieClip("tableChar", 10);
        this.table._x = x;
        this.table._y = y;
        var xpos:Number = 0;
        var ypos:Number = 0;
        var ctr:Number = 0;
        while (ctr<this.symbol.length) {
            this.box(this.table, xpos, ypos, this.symbol[ctr]);
            if ((xpos%(16*SpecialChar.box_size)) == 0 && (xpos != 0)) {
                ypos += 25;
                xpos = 0;
            } else {
                xpos += SpecialChar.box_size;
            }
            ctr++;
        }
    }
   
}

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 août 2006 à 01:27
salut

Begin VB.Form mainForm
BorderStyle = 1 'Fixed Single
Caption = " CASED"
ClientHeight = 3720
ClientLeft = 45
ClientTop = 330
ClientWidth = 4110
Icon = "mainForm.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3720
ScaleWidth = 4110
StartUpPosition = 2 'CenterScreen
Begin VB.CommandButton SHIFT
Caption = "SHIFT"
Height = 375
Left = 2640
TabIndex = 9
Top = 3240
Width = 975
End
Begin VB.TextBox Text1
Height = 1095
Left = 120
MultiLine = -1 'True
OLEDragMode = 1 'Automatic
OLEDropMode = 2 'Automatic
ScrollBars = 2 'Vertical
TabIndex = 4
Top = 2040
Width = 3855
End
Begin VB.Frame Frame1
Caption = "Shifting"
Height = 855
Left = 120
TabIndex = 7
Top = 840
Width = 3855
Begin VB.TextBox Valeur
Height = 315
Left = 3120
MaxLength = 3
TabIndex = 3
Top = 300
Width = 495
End
Begin VB.OptionButton Option1
Caption = "Z-A"
Height = 255
Index = 1
Left = 480
TabIndex = 2
Top = 480
Width = 615
End
Begin VB.OptionButton Option
Caption = "A-Z"
Height = 255
Index = 0
Left = 480
TabIndex = 1
Top = 240
Value = -1 'True
Width = 615
End
Begin VB.Label Label3
Caption = "Shifting value (1-254):"
Height = 255
Left = 1440
TabIndex = 0
Top = 360
Width = 1575
End
End
Begin VB.Label copyright
Caption = "© snsCrew"
Height = 255
Left = 600
MouseIcon = "mainForm.frx":0442
MousePointer = 99 'Custom
TabIndex = 10
ToolTipText = "http://www.snscrew.net"
Top = 3360
Width = 855
End
Begin VB.Label Label4
Caption = "Enter ASCII chars:"
Height = 255
Left = 240
TabIndex = 8
Top = 1800
Width = 1335
End
Begin VB.Label Label2
Caption = "Encrypter/Decrypter"
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1080
TabIndex = 6
ToolTipText = " Ideas or comments: dimitri@snscrew.net "
Top = 480
Width = 2175
End
Begin VB.Label Label1
Caption = "Ceasar ASCII SHIFT"
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1080
TabIndex = 5
ToolTipText = " Ideas or comments: dimitri@snscrew.net "
Top = 120
Width = 2175
End
End
Attribute VB_Name = "mainForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Déclaration pour les connexions au site de l'auteur et au E-Mail
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'Déclaration variables locales
Dim Erreur
Dim shiftVal

Public Function shiftValVerif()
Erreur = 0

For x = 1 To Len(shiftVal)
test = Mid(shiftVal, x, 1)

If Not test = 1 Then
If Not test = 2 Then
If Not test = 3 Then
If Not test = 4 Then
If Not test = 5 Then
If Not test = 6 Then
If Not test = 7 Then
If Not test = 8 Then
If Not test = 9 Then
If Not test = 0 Then
Erreur = 1
Exit Function
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Next x

Fin:
End Function
Public Function Transf(Lettre)
Dim vaLettre$
Dim valNewLettre$
valLettre = (Asc(Lettre))
valNewLettre = 0

If mainForm.Option(0).Value = True Then
valNewLettre = (valLettre + shiftVal)
Else
valNewLettre = (valLettre + (255 - shiftVal))
End If

If valNewLettre > 255 Then
valNewLettre = valNewLettre - 255
End If

Transf = (Chr(valNewLettre))

End Function
Private Sub SHIFT_Click()
Temp$ = ""
Temp$ = Text1.Text
shiftVal = Valeur.Text

If Valeur.Text = "" Then GoTo Erreur
test = shiftValVerif()
If Erreur = 1 Then GoTo Erreur
If shiftVal > 254 Then GoTo Erreur
If Text1.Text = "" Then GoTo Erreur2

Text1.Text = ""

For x = 1 To Len(Temp)
oldChar = Mid(Temp, x, 1)
Text1.Text = Text1.Text + Transf(oldChar)
Next x

GoTo Fin

Erreur:
errorMSG = MsgBox("Shifting value must be" + vbCrLf + "a number between 1-254!", _
vbExclamation + vbOKOnly, _
" Error!")
Valeur.Text = ""
Valeur.SetFocus
GoTo Fin

Erreur2:
error2MSG = MsgBox("Please enter the characters to convert!", _
vbExclamation + vbOKOnly, _
" No chars!")
Text1.SetFocus
GoTo Fin

Fin:
End Sub
Private Sub copyright_Click()
' Se connecter au site de l'auteur.
On Error GoTo Erreur
Call Connect("http://www.snscrew.net")
Exit Sub

Erreur:
errorMSG = MsgBox("Impossible to connect to snsCrew website...", _
vbExclamation + vbOKOnly, _
" Connexion error")
End Sub

Public Function Connect(ByVal URL As String) As Long
'Cette fonction n'est utile que pour la connection au site de l'auteur.
Connect = ShellExecute(0&, vbNullString, URL, _
vbNullString, vbNullString, vbNormalFocus)
End Function

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
5 août 2006 à 01:41
Mdr !!
Mortalino, c'est de l'AS (Actionscript) ^^. Donc le post est tout simplement mal placé et devrait se trouver sur le forum de:
[ www.flashkod.com]
lol!
@+.

www.monblog.ch/telovtutoriels Flash pour débutants
0
cs_ilde Messages postés 12 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 5 août 2006
5 août 2006 à 01:43
Bonjour à tous,


Je souhaite mettre une liste de données dans une combobox, mais je ne trouve pas comment faire?  je souhaite seulement sélectionner un mot dans une liste déroulante à l'intérieur de ma userform, quelqu'un peut t'il m'aider... merci
0
on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
5 août 2006 à 01:48
Ben de nouveau, poses ta question sur le bon forum ici t'es dans le bar-> discussions libres ^^et une fois sur le bon site (flashkod.com je suppose), tappes liste ou combobox dans le moteur de recherche, y'a sûrement ta réponse.
@±.

www.monblog.ch/telov

tutoriels Flash pour débutants
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
5 août 2006 à 04:25
System.useCodepage = true;

<hr size="2" width="100%" />Croc (click me)
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
5 août 2006 à 12:03
Encore une fois je vais contredire le :
System.useCodepage = true;

Je ne comprend pas pourquoi on conseil a tors cette fonction.
Il ne faut pas utiliser useCodepage !!! À prime abord, cette ligne semble régler comme par magie tous les problèmes, mais c'est faux! Cela force le player Flash à utiliser l'encodage du système sur lequel il roule plutôt que l'Unicode, comme le faisait Flash 5. Le danger est que les visiteurs n'ont pas toujours le même encodage que vous. Les caractères sont affichés avec l'encodage du système du visiteur et non selon un standard qui fonctionnera sur tous les systèmes. Même si la majorité des systèmes utilisent CP1252 ( Latin 1 ), il reste tout de même un danger que vos données soient mal affichées pour quelqu'un à l'étranger ou avec une mauvaise configuration. useCodepage est une solution qui peut sembler facile, mais qui ne règle pas le problème pour tout le monde et qui n'est pas viable à long terme puisque l'Unicode prend de plus en plus de place et que useCodepage risque de disparaître dans les prochaines versions de Flash. Il est donc recommandé de pas y toucher et de le laisser à sa valeur par défaut: false.

Il faut préférer le bon encodage a l'enregistrement du fichier. Ou une modification du code. ( La version 8 de Flash facilite grandement ce processus.

Aller @+
Flo
0
Rejoignez-nous