topical media & game development
actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSItem.ax
actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSItem.ax
[swf]
flex
package
{
public dynamic class @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSItem extends actionscript_book_PodcastPlayer_com_example_programmingas3_podcastplayer_RSSBase
{
public static const STATUS_NEW:String = "new";
public static const STATUS_LOADING:String = "loading";
public static const STATUS_LOADED:String = "loaded";
public static const STATUS_PLAYING:String = "playing";
public static const STATUS_PLAYED:String = "played";
// Required RSS 2.0 elements
public var author:String;
public var guid:Object; // contains @isPermaLink and text
public var _enclosure:Object;
[Bindable]
public var soundUrl:String;
// derived values
public var size:int;
public var duration:Object;
// playback info
public var status:String;
public var pausePosition:Number;
public var timesPlayed:int = 0;
public var timesCompleted:int = 0;
public function get enclosure():Object
{
return this._enclosure;
}
public function set enclosure(elemObj:Object):void
{
var element:XML = elemObj as XML;
var obj:Object = new Object();
var attrib:String = getAttribute(element, "url");
if (attrib != null)
{
this.soundUrl = attrib;
obj.url = attrib;
}
attrib = getAttribute(element, "type");
if (attrib != null)
{
this.contentType = attrib;
obj.type = attrib;
}
attrib = getAttribute(element, "length");
if (attrib != null)
{
this.size = int(attrib);
obj.length = attrib;
}
this._enclosure = obj;
}
public static function parseItem(itemXml:XML):@ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSItem
{
var newItem:@ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSItem = new @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSItem();
var kids:XMLList = itemXml.children();
var elementName:String;
var propName:String;
for each (var element:XML in kids)
{
elementName = element.name();
// handle itunes names
var iTunesIndex:int = element.name().toString().indexOf("itunes");
if (iTunesIndex >= 0)
{
propName = "itunes_" + element.localName();
}
else
{
propName = elementName;
}
var atts:XMLList = element.attributes();
if (element.hasSimpleContent() && element.attributes().length() == 0)
{
newItem[propName] = element.toString();
}
else
{
newItem[propName] = element;
}
}
return newItem;
}
public function getDescriptionHTML():String
{
var html:String = "";
if (this.subtitle != null)
{
html += "<p><b>" + this.subtitle + "</b></p>";
}
if (this.description != null)
{
html += "<p>" + this.description + "</p>";
}
else if (this.summary != null)
{
html += "<p>" + this.summary + "</p>";
}
return html;
}
public function getDuration():String
{
if (this.duration == null)
{
if (this["itunes_duration"] == null)
{
return "";
}
else
{
return this["itunes_duration"].toString();
}
}
return this.duration.toString();
}
}
}
(C) Æliens
27/08/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.