繁体   English   中英

使用AS3在Flash中加载具有搜索功能的flickr图像

[英]Loading an flickr image with a search function in flash using AS3

我创建了一个1024 x 850页面,我试图在main_mc上键入文本并按search_btn图像时尝试实现,但我不断收到错误消息“找不到类型或不是编译时常量:搜索”和“调用可能未定义的方法Search”

我有三个文件可以用来在flickr上创建搜索。 AS3代码:

import xml.*;
import flickr.*;
import fl.controls.*;


var search_txt:TextInput = search_txt;
var search_btn:Button = search_btn;

var search:Search = new Search() as Button;
var reader:RSSReader = new RSSReader();

var media:Namespace = new Namespace("http://search.yahoo.com/mrss/");
default xml namespace = media;

function rssProcessed(event:Event):void
{
var imgLoader:Loader;
var thumbX:Number = 0;
var thumbY:Number = 65;

for(var i:uint = 0; i < reader.episodes.length(); i++)
{
    imgLoader = new Loader();
    imgLoader.load(new URLRequest(reader.episodes[i].thumbnail.@url));
    addChild(imgLoader);

    if(i%5 == 0 && i != 0)
    {
        thumbY += 80;
        thumbX = search_txt.x;
    }
    imgLoader.x = thumbX;
    imgLoader.y = thumbY;
    thumbX += 80;

    if(i >= 14)
    {
        break;
    }
}
trace(reader.episodes[0].thumbnail.@url);
}

function dataReady(event:Event):void
{
reader.addEventListener(Event.COMPLETE, rssProcessed);
reader.processXML(search.feed);
}

function searchFlickr(event:MouseEvent):void
{
search.search(search_txt.text);
search.addEventListener(Event.COMPLETE, dataReady);
}

search_btn.addEventListener(MouseEvent.CLICK, searchFlickr);

导入XML(此文件夹中的文件称为RSSReader.as)

package xml
{
import flash.events.*;
import flash.net.*;

public class RSSReader extends EventDispatcher
{
    private var xmlLoader:URLLoader;
    public var feed:XML;
    public var episodes:XMLList;
    public var title:String;
    public var description:String;

    public function RSSReader()
    {
        xmlLoader = new URLLoader();
    }

    public function load(xmlReq:URLRequest):void
    {
        xmlLoader.load(xmlReq);
        xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
    }

    private function xmlLoaded(event:Event):void
    {
        processXML(new XML(xmlLoader.data));
    }

    public function processXML(xmlData:XML):void
    {
        feed = xmlData;
        episodes = feed..item;
        title = feed.channel.title;
        description = feed.channel.description;
        dispatchEvent(new Event(Event.COMPLETE));
    }
}
}

导入flickr(此文件夹中的文件称为Search.as)

package flickr
{
import flash.net.*;
import flash.events.*;

public class Search extends EventDispatcher
{
    private var req:URLRequest;
    public var info:URLVariables;
    private var loader:URLLoader = new URLLoader();
    public var feed:XML;

    public function Search()
    {

    }

    public function search(searchStr:String):void
    {
        req = new URLRequest("https://api.flickr.com/services/feeds/photos_public.gne");
        info = new URLVariables();
        info.format = "rss_200";
        info.tags = searchStr;
        req.data = info;
        loader.load(req);
        loader.addEventListener(Event.COMPLETE, dataLoaded);
    }

    private function dataLoaded(event:Event):void
    {
        feed = new XML(loader.data);
        dispatchEvent(new Event(Event.COMPLETE));
    }
}
}

有人知道解决办法吗?

Search类扩展了EventDispatcher,但是您将其初始化为Button。 如果要使用Button作为按钮,搜索需要扩展Button。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM