Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 ActionScrip3从多个嵌套容器中获取特定子级_Actionscript 3 - Fatal编程技术网

Actionscript 3 ActionScrip3从多个嵌套容器中获取特定子级

Actionscript 3 ActionScrip3从多个嵌套容器中获取特定子级,actionscript-3,Actionscript 3,我想向您寻求有关Actionscript 3的帮助。如何从函数TitleBannerEffects()(父对象是titleBannerContainer sprite对象)的两个子对象(具体为titleBannerPicture)调用中访问一个。经典方法,如titleBannerContainer.titleBannerPicture或this.titleBannerContainer.titleBannerPicture或this.titleBannerPicture返回错误或未定义状态。此语

我想向您寻求有关Actionscript 3的帮助。如何从函数TitleBannerEffects()(父对象是titleBannerContainer sprite对象)的两个子对象(具体为titleBannerPicture)调用中访问一个。经典方法,如titleBannerContainer.titleBannerPicture或this.titleBannerContainer.titleBannerPicture或this.titleBannerPicture返回错误或未定义状态。此语法仅适用于构造函数TitleBanner()函数。有人能帮我解决这个老生常谈的问题吗

多谢各位

代码示例:

package myscript {
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.BitmapData
import flash.display.Bitmap;
import flash.filters.BitmapFilterQuality;
import flash.filters.GlowFilter;
import flash.filters.DropShadowFilter;
import Math;

public dynamic
class TitleBanner extends Sprite {
    // Premenne nastavania objektu
        public var pictureName_str: String = "Title_Banner_Picture";
        public var maskName_str: String = "Title_Banner_Mask";
    // Premenne tlacitok
        public var buttonActivation: Boolean = true;
    // Premenne efektu zmeny obrazku
        private var actualPicturePosition: String = "LeftUp";
        private var nextPicturePosition: String = "RightUp";
        private var titleBannerMaskWidth: Number;
        private var titleBannerMaskHeight: Number;

    // Konstruktor
    public function TitleBanner(): void {
        // Nacitanie Container-u
            var titleBannerContainer: Sprite = new Sprite();
            titleBannerContainer.name = "titleBannerContainer";
            this.addChild(titleBannerContainer);
        // Nacitanie masky do Container-u: titleBannerContainer
            var titleBannerMask_mc: Title_Banner_Mask = new Title_Banner_Mask();
            titleBannerMask_mc.name = "titleBannerMask_mc";
            titleBannerContainer.addChild(titleBannerMask_mc);
        // Nacitanie obrazku do Container-u: titleBannerContainer
            var titleBannerPicture: Bitmap = new Bitmap(new Title_Banner_Picture());
            titleBannerPicture.name = "titleBannerPicture";
            titleBannerContainer.addChild(titleBannerPicture);
        // Priradenie masky
            titleBannerPicture.mask = titleBannerMask_mc;
        // Nastavenie filtrov Container-u
            titleBannerContainer.filters = TitleBannerFilters();
        // Nastavenie efektu posuvania obrazkov
            titleBannerMaskWidth = Math.ceil(titleBannerMask_mc.width);
            titleBannerMaskHeight = Math.ceil(titleBannerMask_mc.height);   
            TitleBannerEffects();  
    }
    private function TitleBannerFilters(): Array {
        // Nastavenie Glow efektu
            var titleBannerGlowEffect: GlowFilter = new GlowFilter();
        //titleBannerGlowEffect.alpha = 1;          
            titleBannerGlowEffect.color = 0xffffff;
            titleBannerGlowEffect.blurX = 20;
            titleBannerGlowEffect.blurY = 20;
            titleBannerGlowEffect.inner = true;
            titleBannerGlowEffect.strength = 2;
            titleBannerGlowEffect.quality = BitmapFilterQuality.HIGH;
        // Nastavenie Shadow efektu
            var titleBannerShadowEffect: DropShadowFilter = new DropShadowFilter();
            titleBannerShadowEffect.alpha = 1;
            titleBannerShadowEffect.color = 0x666666;
            titleBannerShadowEffect.blurX = 4;
            titleBannerShadowEffect.blurY = 4;
            titleBannerShadowEffect.inner = true;
            titleBannerShadowEffect.angle = 45;
            titleBannerShadowEffect.distance = 4;
            titleBannerShadowEffect.strength = 1;
            titleBannerShadowEffect.quality = BitmapFilterQuality.HIGH;
        // Navratova premenna
            return [titleBannerGlowEffect, titleBannerShadowEffect];
    }
    private function TitleBannerEffects(): void {
        switch (actualPicturePosition) {
            // Prechod prveho obrazku
                case "LeftUp":
                    switch (nextPicturePosition) {
                        case "RightUp":
                            trace("LeftUp -> RightUp");
                            //trace(this.getChildAt(0).name].numChildren);                  
                        break;
                        case "LeftDown":
                            trace("LeftUp -> LeftDown");
                            break;
                        case "RightDown":
                            trace("LeftUp -> RightDown");
                            break;
                        default:
                            trace("No transition");
                            break;
                    }
                    break;
            // Prechod druheho obrazku
                case "RightUp":
                    switch (nextPicturePosition) {
                        case "LeftDown":
                            trace("RightUp -> LeftDown");
                            break;
                        case "RightDown":
                            trace("RightUp -> RightDown");
                            break;
                        case "LeftUp":
                            trace("RightUp -> LeftUp");
                            break;
                        default:
                            trace("No transition");
                            break;
                    }
                    break;
            // Prechod tretieho obrazku
                case "LeftDown":
                    switch (nextPicturePosition) {
                        case "RightDown":
                            trace("LeftDown -> RightDown");
                            break;
                        case "LeftUp":
                            trace("LeftDown -> LeftUp");
                        break;
                        case "RightUp":
                            trace("LeftDown -> RightUp");
                            break;
                        default:
                            trace("No transition");
                            break;
                    }
                    break;
            // Prechod stvrteho obrazku
                case "RightDown":
                    switch (nextPicturePosition) {
                        case "LeftUp":
                            trace("RightDown -> LeftUp");
                            break;
                        case "RightUp":
                            trace("RightDown -> RightUp");
                            break;
                        case "LeftDown":
                            trace("RightDown -> LeftDown");
                            break;
                        default:
                            trace("No transition");
                            break;
                    }
                    break;
        }
    }
}
}

我认为,如果您想从构造函数外部访问titleBannerContainer或其子级,则需要将该变量设置为document类的属性。您正在构造函数中声明变量,因此它将只存在于构造函数中。要使该变量成为document类的属性,请将变量声明放在构造函数之外,如下所示:

class TitleBanner extends Sprite {
     // variables declared here are called properties of the document class.
     // you have some. 
     // add your titleBannerContainer here
     var titleBannerContainer:Sprite = new Sprite();

现在,您可以从其他函数访问标题栏容器

谢谢您的回复,非常感谢。然而,经过一天半的尝试和搜索,我在表格中找到了一些解决方案:

Object(this.getChildAt(0)).getChildAt(1))
从函数TitleBannerEffects()返回所需的对象titleBannerPicture调用

再次感谢你