Помествам един пример как си комуникират Flash и PHP. При AS3, класът
LoadVars class от AS2 е премахнат. Тук идват и първите проблеми на всеки започващ разработването с AS3. Подаването на данни и обратното вземане на разултата става по следния начин:
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| // път до PHP файла
var phpFilePath:String = "phpFile.php";
var my_numberVariable:Number = 3;
// при false - върща стойност 1, при true - връща 2
var receiveTwoVars:Boolean = true;
var request_:URLRequest = new URLRequest(phpFilePath);
// мотода как PHP ще взема променливите
request_.method = URLRequestMethod.POST;
// Тук си добавяме промеливите, които искаме да изпратим,
// PHP ги хваща като: $_POST['numberVariable'] и $_POST['oneMore']
var varsToSend:URLVariables = new URLVariables();
varsToSend.numberVariable = my_numberVariable;
varsToSend.oneMore = receiveTwoVars;
request_.data = varsToSend;
var urlLoader:URLLoader=new URLLoader;
urlLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, sendAndGetVars);
urlLoader.load(request_);
function sendAndGetVars(info:Event):void {
if (!receiveTwoVars) {
trace(my_numberVariable+" * "+my_numberVariable+" = "+info.target.data.theResult);
} else {
trace(my_numberVariable+" * "+my_numberVariable+" = "+info.target.data.theResult+" "+info.target.data.var2);
}
} |
когато receiveTwoVars = false, output: 3 * 3 = 9
когато receiveTwoVars = true, output: 3 * 3 = 9 oneMoreAdde
Ето го и нашия
PHP файл, който ще обработва входните данни и ще връща резултат:
CODE1
2
3
4
5
6
| <?php
echo 'theResult='.($_POST['numberVariable']*$_POST['numberVariable']);
if ($_POST['oneMore']== TRUE) {
echo '&var2=oneMoreAdded';
}
?> |
Ако преди това сте писали на AS2 ще знаете, че когато вземахме променливи можеше да записваме
& зад всяка променлива. Това при AS3 ще доведе до следната грешка:
Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs. Тук правилото е между две промеливи да има един
&, а ако има само една променлива, то няма
&.
Примерни файлове за даунлоуд:
ТУК