یه مشکل در کد نویسی

fazelit

Member
سلام من کد زیر رو نوشتم
[PHPS]
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;

function showChildren1(dispObj:DisplayObject):void{
trace(dispObj);
for(var i:int=0; i< Object(this).dispObj.numChildren; i++){

//var obj:DisplayObject= Object(this).dispObj.getChildAt(i);
/*if(obj is DisplayObjectContainer){
trace(obj.name , obj);
showChildren(obj);
}
else{
trace(obj);
}*/
}
}

showChildren1(stage);
[/PHPS]

من توی stage یه موی کلیپ و داخل اون هم چند موی کلیپ ساختم

اما خطای
[PHPS]
[object Stage]
TypeError: Error #1010: A term is undefined and has no properties.
at child_fla::MainTimeline/showChildren1()
at child_fla::MainTimeline/frame1()

[/PHPS]

میده.
مشکل از کجاست؟
 

fazelit

Member
خطا به خاطر
PHP:
for(var i:int=0; i< Object(this).dispObj.numChildren; i++){

وقتی اون رو به
PHP:
for(var i:int=0; i< Object(this).stage.numChildren; i++){

قرار میدم خطا نمیده؟!!!!
منظورتون از چرا this رو کست میکنی؟ نفهمیدم؟
اگر منظورتون Object(this) هستش که چرا گذاشتم چون خطای object میگرفت
 

fazelit

Member
دوست عزیز
اون کار و که گفتم رو کردی؟
سلام
من دستور
[PHPS]
showChildren1(stage);
[/PHPS]

رو کامت میکنم باز خطا میده.
من کد رو به
[PHPS]
function showChildren1(dispObj:DisplayObjectContainer):void{
[/PHPS]
تغییر میدم باز هم خطا میده؟!!!
 

armanbm

کاربر VIP
اول که : دوست عزیز همونطور که جاوید جان فرمودند، DisplayObject ها اصلا فرزندی ندارند. بلکه DsiplayObjectContainer ها دارند.

علاوه بر این کدی که نوشته اید از نظر مفهومی نیز مشکل دارد. من تعجب میکنم چگونه در برخی موارد پیغام خطا نمیداده است.
شما بهتره اینطوری کد رو بنویسید:

[PHPS]
import flash.display.DisplayObjectContainer;

function showChildren1(dispObj:DisplayObjectContainer):void{
for(var i:int=0; i< dispObj.numChildren ; i++){
trace("Child Number "+ i + " is : " + dispObj.getChildAt(i));
}
}

showChildren1(stage);
[/PHPS]
فقط حواستان باشد که این کد برای اشیایی که امکان دارای فرزند هستند کار میکند. مثلا برای TexField که نمیتواند فرزندی داشته باشد کار نمیکند!
 

spryboy

کاربر فعال
سلام
دوستان راهنمایی هاشون درسته، اما اگر میخواید خروجی فانکشنتون تمام آبجکتها رو نمایش بده، باید برنامه تون رو به این شکل بنویسید:
[JSS]
function showChildren1(dispObj:*):void{
for (var i:int = 0; i< dispObj.numChildren; i++)
{
var obj:DisplayObject = dispObj.getChildAt(i);
if (obj is DisplayObjectContainer)
{
trace(obj.name, obj);
showChildren1(obj);
}
else
{
trace(obj);
}
}
}

showChildren1(stage);[/JSS]

موفق باشید
 

fazelit

Member
ممنون دوست عزیز
درست کار کرد. پس مشکلم از این بود که disObj رو DisplayObject تعریف کرده بودم.
بازهم ممنون
 

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

بالا