【问题标题】:i++ does not work for var in AS3?i++ 不适用于 AS3 中的 var?
【发布时间】:2011-01-26 12:58:47
【问题描述】:

我正在尝试从 for 循环中获取多个变量。网址如下所示:

total=2&id1=2&content1=I+am+the+first+blog&id2=4&content2=I+am+the+second+blog

for (var i:Number=i; i<=total;i++){ 
 trace(i);
 var id = this.evt.target.data+i;
        var content = evt.target.data.content;
 trace ('id from DB: ' + id);
        trace ('content from DB: ' + content);
}

这行代码不起作用。各种方法我都试过了:

var id = this.evt.target.data+i;
var id = ["this.evt.target.data"+i]; //traces var id as text only, not the result id1
var id = this.evt.target.data.i;
var id = this.evt.target.data[i];
var id = this.evt.target.data+i;

这样不行吗?还是我错过了什么?

【问题讨论】:

  • evtevt.targetevt.target.data 指的是什么?您是在尝试从 URL 中读取 FlashVars,还是在尝试读取通过 URLLoader 打开的数据?

标签: actionscript-3 var


【解决方案1】:

非常猜测您正在尝试做什么,我相信这就是您尝试的:

// ...
private var loader:URLLoader;

public function foo ( someUrl:String ):void
{
    loader = new URLLoader();
    loader.addEventListener( Event.COMPLETE, onComplete );
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.load( new URLRequest( someUrl ) );
}

private function onComplete ( event:Event )
{
    var total:int = int( event.target.data.total );

    for ( var i:int = 1; i <= total; i++ )
    {
        trace( event.target.data[ 'id' + i ] );
        trace( event.target.data[ 'content' + i ] );
    }
}

【讨论】:

  • 我试过你的例子,改变了一些值,但它给了我同样的错误。
【解决方案2】:

这是我的代码:

var request:URLRequest = new URLRequest("http://localhost:8888/lifestyle/get.php?type=blog");
request.method = URLRequestMethod.GET;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(request);

function completeHandler(evt:Event) {

  //var blancData = evt.target.data.blancData;
  var total = evt.target.data.total;
  var id = evt.target.data.id;
  var content = evt.target.data.content;

  for (var i:Number=1; i<=total;i++){ 
    var id = evt.target.data.id;
    var content = evt.target.data.content;
    trace ('id uit DB: ' + id);
    trace ('content uit DB: ' + content);
    }

 // trace ('totaal rijen in DB: ' + total);
  //trace ('id uit DB: ' + id);
  //trace ('content uit DB: ' + content);
}

【讨论】:

  • 如果我将 var id = evt.target.data.id 更改为 var id = evt.target.data.id1;它确实有效,但是当我将其更改为 var I 时,它不会..
【解决方案3】:

有效!!

@Poke 谢谢你的回答!!你为我指明了正确的方向!

var content = evt.target.data['content' + i];

现在我要打自己一巴掌了,因为我以前没有看到这个:)

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 2016-08-16
    • 2013-12-05
    • 2022-07-14
    • 2018-05-30
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多