загрузить изображение на проблему точки регистрации мувиклипа - PullRequest
0 голосов
/ 20 августа 2011

для загрузки изображения в мувиклип, точка регистрации mc должна быть вверху слева. Есть ли способ загрузки изображения на весь мувиклип, когда его точка обзора не вверху слева. Другими словами, чтобы установить, где начать помещать изображение со ссылкой на мувиклип

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Конечно.

Примечание: Любой ребенок , добавленный к DisplayObject, размещает свою собственную точку регистрации в точке регистрации клипа , если не указано иное.указано (звучит так, будто вы это хорошо знаете).Немного сложно "переопределить" это поведение, но есть некоторые обходные пути:

import flash.display.Sprite;

// assume parentClip already has a single image inside of it at -100,-100

var newClip:Sprite = new Sprite();

// add a peachy-red box to the child (to give us something to look at)
newClip.graphics.beginFill(0xff9999);
newClip.graphics.drawRect(0, 0, 200, 200);
newClip.graphics.endFill();

// Essentially, tell the newClip to show up wherever the pre-existing child is
var curChild:DisplayObject parentClip.getChildAt(0)
newClip.x = curChild.x;
newClip.y = curChild.y;

parentClip.addChild(newClip);

С этим тоже можно многое сделать.Если вы хотите получить настоящее воображение, вы можете создать пользовательский класс , который расширяет DisplayObjectContainer, который отменяет метод addChild, проверяет требуемый parent на наличиеchildren и получить X Y координаты дочернего элемента, который является самым дальним из верхних | левых.

Пользовательский класс будет выглядеть примерно так:

package {
    import flash.display.DisplayObject;
    import flash.display.Sprite;

    public class MySuperContainer extends Sprite {
        public function MySuperContainer() {
            super();
        }

        override public function addChild(child:DisplayObject):DisplayObject {
            var to_x:Number = 0;
            var to_y:Number = 0;

            for(var i:int = 0; i < this.numChildren; ++i) {
                var c:DisplayObject = this.getChildAt(i);
                if(c.x < to_x) to_x = c.x;
                if(c.y < to_y) to_y = c.y;
            }

            child.x = to_x;
            child.y = to_y;

            return super.addChild(child);
        }
    }
}

Допустим, приведенный выше пример aнемного более "продвинутый", но расширение классов и полиморфизм очень ценная OOP информация для кодировщиков, если вы еще не знакомы с ними.Кроме того, мой пример класса расширяет Sprite, но вы можете расширить любой элемент, например DisplayObjectContainer.MovieClip и т. Д. Удачи!

1 голос
/ 20 августа 2011

да, вы можете.

это действительно простая вещь, что после добавления объектов в MovieClip вы можете расположить его везде, используя его свойства x и y.

как

var mc:MovieClip = new MovieClip();
addChild(mc);

var mc_child:MovieClip = new MovieClip();
mc.addChild(mc_child);

mc_child.x = //whatever you like.
mc_child.y = //whatever you like.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...