لیست جامع فلش کاران ایران با کمک شما - مشاهده جزئیات طرح ...


جشنواره وب ایران انجمن تخصصی فلش





حمایت از ما - بنر تبلیغی ما در سایت شما - کلیک کنید


نویسنده موضوع: xml در فلش اکشن اسکریپت 2 و 3  (دفعات بازدید: 1165 بار)

مدیریت سایت

  • مدیر سایت
  • یه دنگ از سایت به نامشه
  • *****
  • تشکر
  • -اهدا شده: 198
  • -دریافت شده: 487
  • ارسال: 555
  • امتیاز: +557/-4
  • مدیریت سایت
    • مسنجر Yahoo - mohsensemsarpour
    • ديدن مشخصات
    • گروه نرم افزاری رایان حمد
    • ایمیل
xml در فلش اکشن اسکریپت 2 و 3
« : مارس 22, 2010, 07:15:47 »
سوال : روش استفاده از XML در فلش چگونه است ؟

دوستان سلام
یکی از اعضای انجمن در برای انجام پروژه خودشون نیاز به فراخونی XML به داخل فلش رو داشتند به همین دلیل قصد کردیم آموزش روش کار با فایل های XML رو برای ایشون درج کنیم ، با توجه به آموزش مناسب و توضیحات کامل دوستانم در سایت http://irdevs.com تصمیم گرفتم همون مطلب رو در اینجا درج کنم . در صورتی که مشکل یا سوالی در این زمینه بود بفرمایید تا پاسخگو باشیم

موفق باشید

پاسخ

XML ، اکشن اسکریپت و فلش

در پلتفرم فلش ما با عناصر کاری فراوانی برای بسط و گسترش ایده های خود روبرو هستیم از صدا و ویدیو تا XML همه و همه قدرت خلق و کنترل برنامه های پیشرفته تحت این پلتفرم را برای ما مهیا می کنند ، XML به عنوان ساختار متداول و استاندارد ، برای وب و حتی برنامه های دسکتاپ ، نقش بسزایی در تامین نیازهای نوشتاری و متنی پلتفرم فلش بازی می کند به صورتی که تقریبا کمتر برنامه مترقی تحت وبی رامی توانید پیدا کنید که از XML بهره نبرده باشد .

در اکشن اسکریپت 2.0 ما با کلاس XML و توابع زیر گروه ان سرو کار داریم و استفاده از این کلاس ساده تر از ان است که نیازی به توضیح داشته باشد اگر چه این مقاله بیشتر برای آموزش استفاده از XML با اکشن اسکریپت 3.0 می باشد اما حداقل برای یک یادآوری کمی به ان می پردازیم .

XML در اکشن اسکریپت 2.0 یک زیر مجموعه از کلاس XMLNode و خود XMLNode زیر مجموعه Object می باشد و همانطور که می دانید در اکشن اسکریپ 2.0 ما برای لود دیتا و اطلاعات از یک XML به شکل زیر عمل می کردیم :


Action Script or PHP :



var your_xml:XML = new XML();
your_xml.onLoad = function(s) {
    if (
s) {
        
trace(this);// this ==> your_xml Data
        
trace(this.firstChild.nodeName);
    } else {
        
trace("Error");
    }
};
your_xml.load("your_xml_file.xml");





و برای دسترسی به باقی Node ها و Child ها از firstChild و childNodes استفاده می کردیم . در این بین childNodes بهترین گزینه برای کار کردن خواهد بود چرا که کلیه Node های زیر مجموعه یک Node دیگر را به صورت آرایه بر می گرداند و شما با استفاده از ایندکس انها به انها دسترسی خواهید داشت به مثال زیر توجه کنید .

Action Script or PHP :



var your_xml:XML = new XML();
your_xml.ignoreWhite true
your_xml
.onLoad = function(s) {
    if (
s) {
        var 
nodes1 this.childNodes;
        for (var 
i=i<nodes1.length i++) {
            var 
nodes2 nodes1[i].childNodes;
            for (var 
j=j<nodes2.length j++) {
                
trace(j+"==>"nodes2[j])
            }
        }

    } else {
        
trace("Error");
    }
};
your_xml.load("your_xml_file.xml");

[/
i]




زمانی که قرار باشد یک XML در متن کد ها جای بگیرد و نوشته شود ، مجبور بودیم انرا را به صورت String بنویسیم و انها را با استفاده از تابع parseXML به صورت XML برای این کلاس معرفی کنیم برای درک آسان ، String مربوطه را در چند خط و به صورتی مرتب می نویسیم

Action Script or PHP :



var xml_string "<developers>"+
                    
"<flash>"+
                        
"<item>"+
                            
"<name>dev01</name>"+
                        
"</item>"+
                    
"</flash>"+
                    
"<ajax>"+
                        
"<item>"+
                            
"<name>dev01</name>"+
                        
"</item>"+
                    
"</ajax>"+
                    
"<php>"+
                        
"<item>"+
                            
"<name>dev01</name>"+
                        
"</item>"+
                    
"</php>"+
                
"</developers>"
               
trace(xml_string.firstChild.childNodes[0].nodeName // undefined

var xml =  new XML();
xml.parseXML(xml_string);
trace(xml.firstChild.childNodes[0].nodeName //  flash





همین مقدار توضیح برای لود و استفاده از XML در فلش با استفاده از اکشن اسکریپت 2.0 کافی می باشد .

XML در اکشن اسکریپت 3.0

ما در اکشن اسکریپت 3.0 ساختار متفاوتی را برای XML تجربه می کنیم ، در اکشن اسکریپت 3.0 xml از استاندارد E4X پشتیبانی و تبعیت می کند و کلاس XML ی که در اکشن اسکریپت 2.0 با ان سروکار داشتیم در اینجا به XMLDocument تغییر نام یافته است و کلاس XML برای پشتیبانی از استاندارد E4X در نظر گرفته شده است که کاملا متفاوت با کلاس XML ی که در AS 2.0 می شناختید عمل می کند .

E4X از یک روش ساده و بسیار مفید برای دسترسی به xml استفاده می کند ، تقریبا عملکردی مشابه Object را شاهد خواهید بود که برای دسترسی به Node ها از نقطه dot استفاده می کند و برای دسترسی به یک Node خاص مجبور به استفاده از حلقه های تکرار مثل for و while نخواهید بود و مهمتر اینکه اکنون xml به صورت inline و در کنار کد ها بدون نیاز به کاراکتر “ و یا ‘ نوشته می شود و برای کلاس XML قابل درک خواهد بود

Action Script or PHP :



var your_xml  = new XML() ;
var 
xml:XML = <foo>
                <
test>
                    <
vito>vito text</vito>
                </
test>
                <
exam>
                    <
vb>exam 1</vb>
                    <
vb>exam 2</vb>
                </
exam>
              </
foo>
           
trace(xml.test.vito// ==> vito text
trace(xml.exam.vb// ==> <vb>vb ex 1</vb> <vb>vb ex 2</vb>
trace(xml.exam.vb[1])// ==> exam 2





برای دسترسی به Node ها از نام Node و نقطه استفاده می کنیم و اولین گزینه مطابقی که در XML یافت شود بازگشت داده خواهد شد و در صورتی که Node مربوطه خود داری زیر گروه باشد حاصل یک XMLList خواهد بود
XMLList متفاوت از آرایه Array می باشد اما حاصل مشابه استفاده از تابع childNodes در اکشن اسکریپت 2.0 می باشد در انجا یک آرایه از Node ها برگشت داده می شد در اینجا یک XMLList .
تابع children() در اکشن اسکریپت 3.0 جایگزین childNodes در as2.0 شده است .
دسترسی به attribute ها هم از ساختار مبتنی بر نقطه بهره می برذ و برای ایجاد تفاوت بین نام Node و نام attribute ، از یک علامت @ قبل از نام attribute ی که به دنبال ان هستید قرار استفاده می کنیم .

Action Script or PHP :



var item:XML =
    <
item name="attribute">
        <
name>element</name>
    </
item>;

trace(item.name); //  "element"
trace(item.@name); //  "attribute"





attributeها هم مانند Node می توانند به صورت XMLList برگشت داده می شوند ، در صورتی که در یک Node مشخص بیش از یک attribute مطابق یافت شود حاصل کار همه ان attribute ها خواهد بود که به صورت XMLList برگشت داده می شوند

Action Script or PHP :



var pics:XML =
    <
item>
        <
img url="pic1.jpg" />
        <
img url="pic2.jpg" />
        <
img url="pic3.jpg" />
    </
item>;

trace(pics.img.@url is XMLList); // true
trace(pics.img.@url); //  "pic1.jpgpic2.jpgpic3.jpg"
trace(pics.img.@url[0]); //  "pic1.jpg"





از دیگر قابلیتهای کلاس XML در اکشن اسکریپت 3.0 استفاده از ساختار فیلتر شده برای Node ها و attribute ها می باشد به مثال زیر توجه کنید :

Action Script or PHP :



var test:XML =
    <
test>
        <
item>
            <
name>amir</name>
            <
info city="shiraz">
                <
age>25</age>
            </
info>
        </
item>
        <
item>
            <
name>reza</name>
            <
info city="shiraz">
                <
age>28</age>
            </
info>
        </
item>
    </
test>;
    
trace(test.item.(name == "amir") )
    
/*
    <men>
      <name>amir</name>
        <info age="25">
            <city>shiraz</city>
        </info>
   </men>
   */
 
    
trace(test.item.info.(@city == "shiraz" ) )
    
/*<info city="shiraz">
         <age>25</age>
      </info>
      <info city="shiraz">
         <age>28</age>
      </info>
   */
    
trace(test.item.info.(age25) )
    
/*
    <info city="shiraz">
       <age>28</age>
    </info>
    */





مثال ها به اندازه کافی گویا می باشد و توضیح بیشتری برای عملکرد ساختار E4X در اکشن اسکریپت 3.0 هم ضروری به نظر نمی رسد تنها یک مبحث باقی می ماند ان هم لود XML از یک فایل به درون برنامه که با نمونه کد اکشن اسکریپت زیر صورت می گیرد

Action Script or PHP :



var ur:URLRequest =  new URLRequest("english.xml") ;
var 
ul:URLLoader =  new URLLoader(ur) ;
ul.addEventListener(Event.COMPLETE loadComp)

function 
loadComp(e){
    var 
your_xml:XML = (ul.data)
    
trace(your_xml)
          
}





ابتدا یک URLRequest برای ادرس درخواستی تعریف می کنیم و با استفاده از URLLoader این ادرس را لود می کنیم یک تابع به Event یا رویداد COPLETE لودر نسبت می دهیم و دیتای لود شده را درون متغییر می ریزیم .

منبع : http://irdevs.com
کاربران زیر از پست شما تشکر کرده اند:
روزی که تو آمدی زمادر عریان      *    مردم همه خندان و تو بودی گریان
کاری بکن ای بشر که روز رفتن     *     مردم همه گریان و تو باشی خندان


 
   

Tags: flash xml as2 AS3 آموزش 
 


تگ های عمومی - Popular Tags


flash فلش انجمن تخصصی فارسی آموزش کلاس برنامه نویسی ایران اکشن در تصویری تغییر عذرخواهی روز قالب چیست persian دانلود component منو یک script اسکریپت action date کامپوننت menu استایل افزار دو catalyst به ایجاد Movie Clip سایکل بابت farsi ToolTip Professional مالتی مدیا Portable دسترسی مدیا 10.0 کاتالیست جستجوی مورد تولد برقراری Create Motion Tween PAPERVISION3D تولید با - شبیه سازی Adobe طراحی وب مشکلات as3 سنجی مخصوص ایجاد حرکت با ساخت ثانیه شمار سایت class AS3 delphi mdm نوشتن آموزش تصویری loader flash clip convert کرد MDM Zinc در زمینه builder حرکت توپ شدن flash_mp3_player live بازی Tage ساخت یک انیمیت مقدمات papervison3D مشکل طریقه وارد کردن Tsearch flex بیلدر عدم تماس تازه theme حرکت با تکنیک جهت Sothink SWF Decompiler 5.1 DropDownTreeMenuV3 game در محیط فلش CS5 convertor کاربردی server ما تکنیک Guide نسخه Player رایگان فیلم پلیر farsiconvertor Develop شمسی خاطر معرفی تاریخ سرور جلسه سوم flash save CS4 مشکلات as2 ایجاد فایل تگ ماه Scroller class media cycle App اخیر سمینار آموزش ابتدایی swish max,سویش نرم flash develop ارتباط HadiMetal forum و جامع کار با جلسه چهارم انیمیشن change کوچک رابط کاربری مبتدی Interface flashpro Decompile لایو گذشته روش تاریخچه نظر های







کلیه حقوق برای اعضای انجمن تخصصی فلش ایران محفوظ است