以下のリンクからダウンロードして、インストールすれば動くはずですが、初Airなので自信無し。
はてなブックマークの注目エントリ(コンピュータと科学)のRSSを取得して、載っているURLにアクセスして行きます。
画面は上下2画面あって、コンピュータの注目エントリが上画面、科学が下画面に表示されます。
スクロールは3秒間隔で一画面分ずつ動いて行きます。
実行時はこんなかんじ。
以下長いですがソースです。
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:nagara="*" layout="absolute" applicationComplete="onInit()">
<mx:Script>
<![CDATA[
import HtmlViewer;
private function onInit():void {
var htmlViewer1:HtmlViewer = new HtmlViewer();
var htmlViewer2:HtmlViewer =
new HtmlViewer("http://b.hatena.ne.jp/entrylist/knowledge?sort=hot&threshold=&mode=rss");
loader1.source = htmlViewer1
loader2.source = htmlViewer2
}
]]>
</mx:Script>
<mx:VBox>
<mx:SWFLoader id="loader1" width="100%" height="100%"/>
<mx:HRule width="100%"/>
<mx:SWFLoader id="loader2" width="100%" height="100%"/>
</mx:VBox>
</mx:WindowedApplication>
HtmlViewer.as
package { import flash.html.HTMLLoader; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; public class HtmlViewer extends HTMLLoader { private var urls:Array; private var scrollTimer:Timer; private var loader:URLLoader; private var windowHeight:int = 360; public function HtmlViewer(seedUrl:String="http://b.hatena.ne.jp/entrylist/it?sort=hot&threshold=&mode=rss") { this.width = 1000; this.height = windowHeight; loader = new URLLoader(); var req:URLRequest = new URLRequest(seedUrl); loader.addEventListener(Event.COMPLETE, onRssLoadComplete); loader.load(req); } private function onRssLoadComplete(event:Event):void { var RSS:Namespace = new Namespace("", "http://purl.org/rss/1.0/"); var RDF:Namespace = new Namespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); var xml:XML = new XML(event.target.data); urls = new Array(); for each(var url:XML in xml.RSS::item){ urls.push(url.@RDF::about); } loadNew(); } private function loadNew():void { var url:String = urls.pop(); if (url != null) { this.addEventListener(Event.COMPLETE, scrollHtml); var urlReq:URLRequest = new URLRequest(url); this.load(urlReq); } } private function scrollHtml(event:Event):void { var maxScrollCount:int = (this.contentHeight - windowHeight) / windowHeight; scrollTimer = new Timer(3000, maxScrollCount+2); scrollTimer.addEventListener(TimerEvent.TIMER, onTick); scrollTimer.addEventListener(TimerEvent.TIMER_COMPLETE,showNext); scrollTimer.start(); } private function showNext(event:TimerEvent):void { loadNew(); } private function onTick(event:TimerEvent):void { this.scrollV += windowHeight; } } }
0 件のコメント:
コメントを投稿