کمک! دسترسی به محتویات آبجکت فرزند از طریق پدر

ttiiko

New Member
میدونم مبحث تکراریه ! اما نتونستم توی تاپیک های قبلی جوابم رو پیدا کنم
یه swf دارم به نام page1 که یک TLF text را با کد زیر پر می کند
PHP:
var textLoader:URLLoader = new URLLoader();
textLoader.addEventListener(Event.COMPLETE, textLoaded);
textLoader.load(new URLRequest("001.txt"));

function textLoaded(evt:Event):void
{
    mytext.text = textLoader.data;
}
این فایل swf در فایل دیگری با کد زیر صدا زده میشه و نوشته های فرزند به خوبی در پدر نمایش داده میشه اما میخوام در متد پدر به محتوی TLF text box فرزند دسترسی پیدا کنم تا بتونم توش سرچ کنم. جستجوهام به کد زیر منجر شد! اما ظاهرا غلطه ! ممنون میشم درستش رو برام بنویسید .
PHP:
var loader1:Loader=new Loader();
box1.addChild(loader1);
loader1.load(new URLRequest("page1.swf"));


loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,fun2)

function fun2 (evt:Event):void
{
    var mov:MovieClip=MovieClip(loader1.content);
    var infoTLF:TLFTextField =mov.mytext.text;
}
Action 3 in cs4 or cs5 plz
 
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
فکر می کنم به جای MovieClip(loader1.content);
اینجوری بنویسی درست باشه


PHP:
 var mov:MovieClip = evt.target.content.root;
mov.mytext.text ="2345"

PHP:
 var mov:MovieClip = evt.target.content.root.mytext;
موفق و پیروز باشید
 
آخرین ویرایش:

ttiiko

New Member
نشد

فکر کنم خوب سئوالم رو نپرسیدم
swf اول که به نام page1 است کدش درسته!
من میخوام از swf دوم که نامش base است به محتویات TLFtext در page1.swf دسترسی پیدا کنم( page1 در base لود شده! )
فایل base.fla , page1.fla رو attach کردم به همین پست. ممنون میشم خط مربوطه در فایل base.fla رو تصحیح کنید . به طوری که در base.fla بتونم به محتویات page1.TLFtext دسترسی پیدا کنم برای جستجوی یک کلمه مشخص.
یک دنیا ممنونم

AS3 in CS5

:rose:
 

پیوست ها

  • test base_page1.zip
    329.7 کیلوبایت · بازدیدها: 23
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
امکان دانلود پیوست وجود ندارد!!
در کل راه همین می باشد می بایست از همین روش استفاده کنید
و بعد از آن مانند یک مووی کلیپ که درون آن یک فیلد متنی است با آن رفتار کنید

موفق و پیروز باشید
 

ttiiko

New Member
Error

از صبح تا حالا چندتا کتاب actionscript 3.0 مثل Bible willy , OReilly Essential رو بررسی کردم . کدی که لطف کردید گذاشتید به نظر باید کار کنه اما من هنوز با خطایی به مشخصات زیر روبرو میشم.

ReferenceError: Error #1069: Property mytext not found on page1_fla.MainTimeline__Preloader__ and there is no default value.
at base_fla::MainTimeline/fun2()

همه چیز تا root خوبه! حتی وقتی

var mov:MovieClip = evt.target.content.root

رو می نویسم و در این حالت mov.height رو trace میکنم عدد درست میده
اما وقتی

mov.mytext.text

رو می نویسم error بالا رو میده

:-?

 
آخرین ویرایش:

amird

خبرگان انجمن فلش
سلام راستش ببین نتونستم کامل روش کار کنم .
ولی این کدی که داری می گی می زنی و height رو بهت می ده در واقع داره بهت اندازه همون box1 رو می ده اندازه box1 رو تغییر بده می بینی که فرق می کنه عدد trace شده . پس این از نکته 1 .
وقت کنم روش کار می کنم .
موفق باشی
 

ttiiko

New Member
:cry: درست نشد. کلا بیخیال این راه برای word search شدم و رفتم سراغ همون روش همیشگیه xml و CSS
از اینکه وقت گزاشتید ممنونم دوستان
 

clove-pink

کاربر فعال
سلام
نمي دونم كلا بي خيال شديد يا نه
اما من فكر كنم فهميديم دردش چيه...
1.اول اينكه بايد اون فونتي كه تو فايل page1 ازش استفاده كرديد رو embed كنين و مورد all رو تيك كنيد تا همه رو(چه عدد چه حروف و...)رو embed كنه
2. تو قسمت publish setting و در تب flash قسمت action3 و دكمه setting رو بزنيد و در قسمت runtime shared library setting مورد merged into code رو انتخاب كنيد و ok بزنيد.
با اين كار ديگه warning اينكه فونت ها رو embed كنين رو نمي بينيد.

تو همون page 1 يه dispacher بديد كه معلوم شه اين text شما چه موقع لود شده..
يعني اين:
کد:
import flash.events.Event;

var textLoader:URLLoader = new URLLoader();
textLoader.addEventListener(Event.COMPLETE, textLoaded);
textLoader.load(new URLRequest("001.txt"));

function textLoaded(evt:Event):void
{
    mytext.text = textLoader.data;
    dispatchEvent(new Event("Loader_complete"));
}

بعد حالا مي ريم سراغ base
من اونايي كه غير فعال كرديو بهش كاري نداشتم برشون داشتم فقط گذاشتم كه متن اون رو هموني كه گفتي بشه.
يه listener ميزاريم واسه page1 كه لودش كرديم و مي گيم وقتي لود تموم شد حالا برو متن رو 123 كن يعني اين:
کد:
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.MovieClip;
import fl.text.TLFTextField;

var loader1:Loader=new Loader();
box1.addChild(loader1);
loader1.load(new URLRequest("page1.swf"));


var loader2:Loader=new Loader();
box2.addChild(loader2);
loader2.load(new URLRequest("page2.swf"))

loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,fun2)

function fun2 (evt:Event):void
{
    var mov:MovieClip= evt.target.content;
    mov.addEventListener("Loader_complete",OnLoaded);
   
}
///////////////////
function OnLoaded(e:Event):void{
    e.currentTarget.mytext.text="123";
}
 

جدیدترین ارسال ها

بالا