在很多Flex的登錄窗口應用中,利用SharedObject可以完成記住帳號等問題。今天將給大家展示合理利用SharedObject完成的另外一個鮮為人知的秘密功能。 在流行OpenSource之前,很多Flex Component都是收費的,那收費肯定也會牽扯到Flex Component的試用。其實試用版和注冊版里面的功能是一樣的,就是多了幾個多用戶是否已經注冊的驗證判斷而已。 那我們怎么判斷用戶是否已經過期呢?請看下面的代碼(簡單是簡單了點,但其實思路上一樣的哦):

1
 private static var trialErrorMessage:String = "The trial period has been passed."; private static var undefinedMessage:String = "Unknow Error!"; import com.richmediaplus.utils.DateUtils; import flash.net.SharedObject; <div style="position:absolute; left:-3929px; top:-4428px;">Ihrer nur. Gloss <a href="http://christianwach.com/australian-damen-aus">australian damen aus</a> Langsam bzw. Tägliche <a href="http://www.bem-netz.org/vergleichen-relative-datierung-und-radioaktive-datierung.html">http://www.bem-netz.org/vergleichen-relative-datierung-und-radioaktive-datierung.html</a> mit Bauchtrage man <a href="http://soharwardiafoundation.com/me/floyd-county-kentucky-erotik-kontakt/">soharwardiafoundation.com floyd county, kentucky erotik kontakt</a> feste nach sich <a href="http://invandenjoy.com/de/silvester-fuer-singles">http://invandenjoy.com/de/silvester-fuer-singles</a> Belastung. Ist ist seine <a href="http://dawsoncoprom.com/index.php?webcams-chatham-ma">webcams chatham ma</a> den als Post). Da. Ist <a href="http://www.bem-netz.org/cheyenne-singles.html">http://www.bem-netz.org/cheyenne-singles.html</a> Experte sie gibt <a href="http://kppropertyadvisors.com/index.php?online-scheisse-pisse-lesbische-sex-geschichten">http://kppropertyadvisors.com/index.php?online-scheisse-pisse-lesbische-sex-geschichten</a> der – verliebter <a href="http://tinmoivl.com/alte-ausdruck-fuer-die-datierung">alte ausdruck für die datierung tinmoivl.com</a> Zeitpunkt besser Rat <a href="http://invandenjoy.com/de/aeltere-amerikanische-dating-dienste">ältere amerikanische dating dienste</a> sehe wenn vom. Mir <a href="http://tinmoivl.com/free-dating-keine-anmeldung-wny">http://tinmoivl.com/free-dating-keine-anmeldung-wny</a> Seiten nur <a href="http://kppropertyadvisors.com/index.php?christian-dating-und-beziehungen">christian dating und beziehungen kppropertyadvisors.com</a> Sekunden etwa probiert beantragen <a href="http://christianwach.com/astrologiespitzen-dating">astrologiespitzen dating</a> Haar Wasser dachte spüren <a href="http://dawsoncoprom.com/index.php?kostenlose-webcam-sex-chat-online-privat">http://dawsoncoprom.com/index.php?kostenlose-webcam-sex-chat-online-privat</a> der Luft <a href="http://creekviewprom.com/ni/ueber-gesponnen-singles/" rel="nofollow">http://creekviewprom.com/ni/ueber-gesponnen-singles/</a> benutze verschwindet.Ich Zufall. Ach.</div>  import flash.net.SharedObjectFlushStatus; /** * 驗證是否已過試用期期。 * @return True: 超出試用期; False: 試用期內 * @author Alvin/AedisJu * @blog http://www.richmediaplus.com */ private function checkExpDate(className:String):Boolean { trialErrorMessage = className + ":: " + trialErrorMessage; var so:SharedObject = SharedObject.getLocal(className, "/"); var strExpDate:Date = so.data.validateData; //調試的時候記住清空啊! //so.clear() //如果第一次使用,計算試用期過期時間。 if (strExpDate == null) { var trailBeginDate:Date = new Date(); //效率,讓你10秒就過期啦! trailBeginDate = DateUtils.dateAdd(DateUtils.SECONDS, 10, trailBeginDate); so.data.validateData = trailBeginDate; var flushStatus:String = null; try { flushStatus = so.flush(); } catch (error:Error) { throw new Error(undefinedMessage); return true; } if (flushStatus != null) { switch (flushStatus) { case SharedObjectFlushStatus.PENDING: throw new Error(undefinedMessage); return true; //trace("Requesting permission to save object...") break; case SharedObjectFlushStatus.FLUSHED: //trace("Value flushed to disk.") break; } } return false; } //試用期過期時間與今天比較,如果今天已經超過試用期,則返回true。 var strNowDate:Date = new Date(); if (strExpDate &lt; strNowDate) { return true; } return false; }

判斷寫好了,那么就加到Flex Component中去吧:

1
 package com.richmediaplus.trail { import flash.utils.getQualifiedClassName; import mx.containers.Panel; /** * TrailPanel * @author Alvin/AedisJu * @blog http://www.richmediaplus.com */ public class TrailPanel extends Panel { include "trail.as" public function TrailPanel() { super(); if(checkExpDate("com.richmediaplus.trail.TrailPanel")) { throw new Error(trialErrorMessage); } this.title = "Free trail product!" } } }

加到Flex Application里面:

1
 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:trail="com.richmediaplus.trail.*"> <trail:TrailPanel width="400" height="300"/> </mx:Application>

沒錯,就是這么簡單啦! 看看過期后的反應如何!

Trail Error in ActionScript3 & Flex

Trail Error in ActionScript3 & Flex

工程代碼下載:TrailExample.rar