1

我一直在尝试为Scratch制作一个 mod,它会使用网站的API来提取有关用户的信息。问题是我不得不把它分成两个块。(这些块通过基于具有块名称和函数名称的表调用函数并传入参数来工作。)我已经将它设置在第一个(调用 primAskAboutMe)从 API 加载信息的位置,然后当信息加载后,用户可以使用第二个块(调用 primReportAboutMe)返回值。问题是我无法让第二个块返回答案。

所以要么我试图以错误的方式获取信息,(这是可能的,因为这是我第一次使用动作脚本/Flash 或其他什么,)或者我真的不明白我在做什么。

*注意:原始 Scratch 存储库。该代码可以在 src/primitives/Primitives.as 中找到(但不是因为我还没有将它上传到我自己的存储库,因为我不太确定如何)。

protected var resultAM:String;

    protected function primAskAboutMe(b:Block):void {
var user:String = interp.arg(b, 0);
    var loader:Loader = new Loader();
    var url:String = 'http://www.api.scratch.mit.edu/users/'+user;
    var urlReq:URLRequest = new URLRequest(url);
    loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onCompleteAboutMe );
    loader.load(urlReq);



}
protected function onCompleteAboutMe(e:Event):void{
    //resultAM = e.target.data;
    resultAM="foo";
    }

protected function primReportAboutMe():String{


return resultAM;


}
4

1 回答 1

0

问题是我无法让第二个块返回答案。

我认为这是因为您没有为返回的结果设置接收器。如果您创建一个报告字符串,那么像str_Report = primReportAboutMe();这样更新将返回resultAMinto的文本str_Report

这是一个可测试的小例子。也许它会以某种方式对您有所帮助...请记住,由于primReportAboutMe返回字符串数据,因此必须使用它来更新某些字符串变量

var resultAM:String = "";
var checkResult:String = "";

resultAM="foo";

checkResult = primReportAboutMe(); //# update this String with function returned String
trace ("Check Result is : " + checkResult); //# shows... Check Result is : foo

function primReportAboutMe():String
{
    return resultAM; //# returns a String's current value
}
于 2016-05-30T17:44:20.070 回答