ActionScript Flash:根据JSON值更改帧

时间:2014-10-22 21:49:15

标签: json actionscript-3 flash

我有一个天气小工具我在闪存中制作了七个不同天气类型的帧(例如,下雨,下雪,阴天),并且我使用JSON Feed来获取数据。该馈送提供了针对类似天气条件的各种不同描述,但是不是将其重定向到每个不同的帧,而是将其引导到具有类似描述的那个,例如小雨'和“毛毛雨”#39;将直接指向“雨”。帧。下面的代码是我到目前为止的代码,它指向不同的帧,如果它与它检索的天气条件相同,这将涉及需要比所需更多的帧。我想知道是否有人可以建议添加代码,这将给我所需的导航。 提前致谢。

stop();
function loadConfigFromUrl():void
{
    var urlRequest:URLRequest  = new URLRequest("http://api.wunderground.com/api/51e30dac841a0fbe/conditions/q/zmw:00000.1.03969.json");

    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, completeHandler);

    try{
        urlLoader.load(urlRequest);
    } catch (error:Error) {
        trace("Cannot load : " + error.message);
    }
}

function completeHandler(event:Event):void {
    var loader:URLLoader = URLLoader(event.target);   

    var data:Object = JSON.parse(loader.data);
    trace(data.current_observation.weather);
    trace(data.current_observation.temp_c);
    trace(data.current_observation.wind_kph);

    gotoAndStop(data.current_observation.weather)

    weather.text = data.current_observation.weather;
    temp.text = data.current_observation.temp_c + "°C";
    wind.text = data.current_observation.wind_kph + "km/h"
}
loadConfigFromUrl();

2 个答案:

答案 0 :(得分:1)

执行此操作的最简单方法是使用switch语句(AS3 Docs reference here),以便多个值可以具有相同的输出。像这样:

var frameToUse:String;

switch(data.current_observation.weather)
{
    case "light rain":
    case "heavy drizzle":
    case "other rain type"
        frameToUse = "rainFrameLabel";
    break;
    case "sunny":
        frameToUse = "sunFrameLabel";
    break;
}

gotoAndStop(frameToUse);

答案 1 :(得分:0)

看起来是 Multimap 的理想之地。它允许您将多个值映射到单个键。在你的情况下,它将是:

    • 小雨
    • 重毛毛雨
    • 风暴

不幸的是,AS3并没有内置这种数据结构。它写起来并不难,但更好的是那里的人有already written it for you