Partie 9, imitant URLLoader pour lire des fichiers
Jetons d'abord un coup d'œil au code final
function readFile(){ urlloader = new LURLLoader(); urlloader.addEventListener(LEvent.COMPLETE,readFileOk); urlloader.load("../file/test.txt","text"); } function readFileOk(){ mytxt.text = urlloader.data; }
Imitant essentiellement Actionscript.
Regardez ici l'effet et le code. Si vous ne voyez pas l'effet, veuillez télécharger un navigateur prenant en charge HTML5
http://fsanguo.comoj.com/html5/jstoas09/. index.html
Parlons du processus d'implémentation
En fait, ActiveXObject en JavaScript peut lire et écrire des fichiers locaux, mais le niveau de sécurité de votre navigateur doit être réglé au plus bas , mais ce que nous faisons Les jeux et les pages Web doivent être mis en ligne, et nous ne pouvons en aucun cas exiger que tous les utilisateurs le fassent.
Ici, j'utilise PHP pour implémenter ce processus. PHP peut lire librement les fichiers sur le serveur.
Lire les fichiers avec PHP. Cela peut être fait avec une fonction fopen. Ce qui suit est le code de file.php
if(!file_exists($_POST["file"])){ echo ""; exit; } $file = fopen($_POST["file"],"r"); $filemsg = ""; while (!feof($file)) { $line = fgets($file); $filemsg = $line; } fclose($file); echo $filemsg;
Placez ce php à l'emplacement que vous aimez, puis définissez le chemin LEGEND_FILE_PHP dans legend.js pour pointer vers où. vous le mettez. Emplacement
Concernant le javascript appelant php, bien sûr vous pouvez l'écrire vous-même, car ce n'est pas compliqué, mais je suis une personne très paresseuse, donc j'utilise directement jQuery pour appelez-le, jquery est quoi ? Je suppose que je n'ai pas besoin de l'expliquer
Concernant la structure de LURLLoader, c'est fondamentalement la même que LLoader, seule la méthode de chargement est différente. Voici le code complet de la classe LURLLoader, qui appelle. le php préalablement préparé pour obtenir le texte à lire
function LURLLoader(){ var self = this; self.objectindex = ++LGlobal.objectIndex; self.type="LURLLoader"; self.loadtype = ""; self.content = null; self.oncomplete = null; self.event = {}; } LURLLoader.prototype = { addEventListener:function(type,listener){ var self = this; if(type == LEvent.COMPLETE){ self.oncomplete = listener; } }, load:function (path,loadtype){ var self = this; self.loadtype = loadtype; if(self.loadtype == "text"){ $.post(LEGEND_FILE_PHP, { flg:"read", file:path },function(data){ if(self.oncomplete){ self.event.currentTarget = data; self.data = data; self.oncomplete(self.event); } }); } } }
Concernant l'exemple ci-dessus, j'ai ajouté un bouton et un LTextField Voir le code ci-dessous
init(40,"mylegend",600,500,main); var loadingLayer; var backLayer; var urlloader var mytxt; function main(){ legendLoadOver(); var readBtn = addButton("读取",20); readBtn.x = 10; readBtn.y = 20; addChild(readBtn); readBtn.addEventListener(LMouseEvent.MOUSE_DOWN, readFile); mytxt = new LTextField(); mytxt.x = 10; mytxt.y = 50; mytxt.text = ""; mytxt.width = 300; mytxt.height = 200; mytxt.setType(LTextFieldType.INPUT); addChild(mytxt); } function readFileOk(){ mytxt.text = urlloader.data; } function readFile(){ urlloader = new LURLLoader(); urlloader.addEventListener(LEvent.COMPLETE,readFileOk); urlloader.load("../file/test.txt","text"); } function addButton(lbl,x){ var up = new LSprite(); up.graphics.drawRect(1,"black",[0, 0, 80, 20],true,"#999999"); var txt = new LTextField(); txt.x = x; txt.text = lbl; up.addChild(txt); var over = new LSprite(); over.graphics.drawRect(1,"black",[0, 0, 80, 20],true,"#cccccc"); var txt1 = new LTextField(); txt1.x = x; txt1.text = lbl; over.addChild(txt1); var btn = new LButton(up,over); return btn; }
Ce qui précède est. pour utiliser une syntaxe de type ActionScript pour écrire du HTML5 - Partie 9, en imitant URLLoader pour lire le contenu du fichier. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !