AS3 动态数据加载不正确
AS3 dynamic data loading incorrectly
我正在使用 PHP MySQL 和 AS3 来根据站点号加载动态数据。当我单击下一个站点时出现问题,它会向现有站点添加一个增量并显示新站点,但由于某种原因没有从旧站点中删除内容?
我的PHP
$dbHost = "localhost";
$dbUser = "username";
$dbPass = "password";
$dbName = "dbname";
$dbTable = "tablename";
if (isset($_GET['sn'])) {
$sn = $_GET['sn'];
}
// connecting and selecting database
@mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
@mysql_select_db($dbName) or die(mysql_error());
// getting data
$data = "";
$datatitle = "";
$res = mysql_query("SELECT * FROM ".$dbTable." WHERE Site_ID='$sn'") or die(mysql_error());
while($row = mysql_fetch_object($res)) {
$data .= strip_tags($row->Site_Description);
}
die($data);
我的 AS3 包代码:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.text.TextField;
import flash.events.IOErrorEvent;
public class App extends MovieClip {
public static const URL:String = 'weburl/get.php';
private var loader:URLLoader;
private var request:URLRequest;
public function App():void {
output(" ");
loadData();
}
var siteNumber = 2;
public function loadData():void {
var randomParam:String = "?p=" + Math.floor(Math.random() * (10000000)) + "&sn=";
this.loader = new URLLoader();
request = new URLRequest(URL + randomParam + siteNumber);
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, onLoadData);
loader.addEventListener(IOErrorEvent.IO_ERROR, onDataFiledToLoad);
loader.addEventListener(IOErrorEvent.NETWORK_ERROR, onDataFiledToLoad);
loader.addEventListener(IOErrorEvent.VERIFY_ERROR, onDataFiledToLoad);
loader.addEventListener(IOErrorEvent.DISK_ERROR, onDataFiledToLoad);
loader.load(request);
}
public function onLoadData(e:Event):void {
output( e.target.data);
}
private function onDataFiledToLoad(e:IOErrorEvent):void {
output("onDataFiledToLoad error=" + e.text);
}
public function output(str:String):void {
var text:String = field.htmlText;
field.htmlText = str + text;
}
function removeExisting():void {
this.loader.close();
}
}
}
我在框架上使用的代码
next_site1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlernext_site1);
function mouseDownHandlernext_site1(event:MouseEvent):void
{ siteNumber = siteNumber + 1;
SiteNumberText1.text = siteNumber.toString();
loadData();
}
prev_site1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerprev_site1);
function mouseDownHandlerprev_site1(event:MouseEvent):void
{ siteNumber = siteNumber - 1;
SiteNumberText1.text = siteNumber.toString();
loadData();
}
我了解到您必须卸载数据,但似乎找不到有效的解决方案。
我看了下面这些问题,但它们确实有帮助(没有提到如何卸载数据或为什么新数据没有替换旧数据。):
xml data to dynamic text AS3 flash
正如其他人所说,您保留了旧的输出并添加了新的,而不是用新的替换旧的。这是行 field.htmlText = str + text;
。
相反,用给定的(新)内容覆盖您的 htmlText。
public function output(str:String):void {
field.htmlText = str;
}
我正在使用 PHP MySQL 和 AS3 来根据站点号加载动态数据。当我单击下一个站点时出现问题,它会向现有站点添加一个增量并显示新站点,但由于某种原因没有从旧站点中删除内容?
我的PHP
$dbHost = "localhost";
$dbUser = "username";
$dbPass = "password";
$dbName = "dbname";
$dbTable = "tablename";
if (isset($_GET['sn'])) {
$sn = $_GET['sn'];
}
// connecting and selecting database
@mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
@mysql_select_db($dbName) or die(mysql_error());
// getting data
$data = "";
$datatitle = "";
$res = mysql_query("SELECT * FROM ".$dbTable." WHERE Site_ID='$sn'") or die(mysql_error());
while($row = mysql_fetch_object($res)) {
$data .= strip_tags($row->Site_Description);
}
die($data);
我的 AS3 包代码:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.text.TextField;
import flash.events.IOErrorEvent;
public class App extends MovieClip {
public static const URL:String = 'weburl/get.php';
private var loader:URLLoader;
private var request:URLRequest;
public function App():void {
output(" ");
loadData();
}
var siteNumber = 2;
public function loadData():void {
var randomParam:String = "?p=" + Math.floor(Math.random() * (10000000)) + "&sn=";
this.loader = new URLLoader();
request = new URLRequest(URL + randomParam + siteNumber);
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, onLoadData);
loader.addEventListener(IOErrorEvent.IO_ERROR, onDataFiledToLoad);
loader.addEventListener(IOErrorEvent.NETWORK_ERROR, onDataFiledToLoad);
loader.addEventListener(IOErrorEvent.VERIFY_ERROR, onDataFiledToLoad);
loader.addEventListener(IOErrorEvent.DISK_ERROR, onDataFiledToLoad);
loader.load(request);
}
public function onLoadData(e:Event):void {
output( e.target.data);
}
private function onDataFiledToLoad(e:IOErrorEvent):void {
output("onDataFiledToLoad error=" + e.text);
}
public function output(str:String):void {
var text:String = field.htmlText;
field.htmlText = str + text;
}
function removeExisting():void {
this.loader.close();
}
}
}
我在框架上使用的代码
next_site1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlernext_site1);
function mouseDownHandlernext_site1(event:MouseEvent):void
{ siteNumber = siteNumber + 1;
SiteNumberText1.text = siteNumber.toString();
loadData();
}
prev_site1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandlerprev_site1);
function mouseDownHandlerprev_site1(event:MouseEvent):void
{ siteNumber = siteNumber - 1;
SiteNumberText1.text = siteNumber.toString();
loadData();
}
我了解到您必须卸载数据,但似乎找不到有效的解决方案。
我看了下面这些问题,但它们确实有帮助(没有提到如何卸载数据或为什么新数据没有替换旧数据。):
xml data to dynamic text AS3 flash
正如其他人所说,您保留了旧的输出并添加了新的,而不是用新的替换旧的。这是行 field.htmlText = str + text;
。
相反,用给定的(新)内容覆盖您的 htmlText。
public function output(str:String):void {
field.htmlText = str;
}