Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   подгрузка клипа с камерой от xitri (http://www.flasher.ru/forum/showthread.php?t=193796)

alex_195 01.02.2013 16:53

подгрузка клипа с камерой от xitri
 
Может кто-нибудь подскажет. Имеется клип, в котором фон растягивается на весь экран. Посредине экрана расположен клип-загрузчик, куда подгружаю swf-ки 800х600. Все работает нормально. Сделал игру-бродилку и там использовал камеру от Xitri. Она движется за героем. Фон или mapa естественно выходит за рамки рабочей сцены. Выходной swf - 800х600. При подгрузке в основной ролик игра раскрывается на весь экран, закрывая собой меню и т. д. Пробовал клип-загрузчик маскировать - не помогло. Может кто-то сталкивался с подобной проблемой?

dark256 01.02.2013 18:41

Где собственно можно видеть релевантный данному предикату пример, вышедший из под вашего пера?
Сразу дам подсказку: он должен быть в CS3....

alex_195 01.02.2013 22:01

К сожалению работаю с 8-кой.

mooncar 01.02.2013 22:46

alex_195, CS3 откроет 8-ку. Вам бы для экономии времени сразу бы выложить исходник, а заодно весь проект со страницей публикации, раз у вас там "во весь экран" что-то...

alex_195 01.02.2013 23:33

Вложений: 1
Вот архив с исходниками.

mj_nooker 03.02.2013 02:56

1) А игра должна быть снизу мувика komp_mc?(другими словами - должна ограничиваться его размерами?)


Если да, то такие моменты:
komp_mc на 4х кадрах, а игра грузится в 5м. И _root.clip Вы создаете на 0м уровне - 0й уровень - выше komp_mc! В этом случае (продолжив кадры с komp_mc до 5го кадра) я б на loader1 повесил слушатель

Код AS1/AS2:

var loadListener:Object = {};
        loadListener.onLoadComplete = function(target_mc:MovieClip):Void {
                target_mc.swapDepths(_root.komp_mc);
                }
        loader1.addListener(loadListener);

ну и стенки у komp_mc в 5м кадре растянул (чтоб закрыть поля игры по бокам komp_mc)

2) Если komp_mc фигурировать все-таки не должен, а должна быть именно маска игры именно внутри clip (куда грузится игра) и она после загрузки не видна - то:
внутри клипа-контейнера (clip) для загрузки игры надо создать маску (clip.mask) и еще один контейнер (clip.game) (маска выше, чем контейнер), и в clip.game грузить игру. Ибо если грузить игру в контейнер clip в котором была создана маска clip.mask - при загрузке игра замещает своим инстансом ВСЕ внутрисодержимое clip (тоесть маска убивается).

alex_195 03.02.2013 15:24

mi_nooker, спасибо, что стали разбираться с моей проблемой. Да игра должна загрузиться, как и остальные мувики 800х600 под komp_mc. Насчет того, что грузить игру в клип, созданный в clip и и вешать на его маску я уже пробовал, не прокатило. Я все же думаю, что в самом клипе(в игре) camera_mc имеется код, который выводит эту камеру на более высокий уровень, чем подгружающий его клип. Вот посмотрите:
Код AS1/AS2:

import flash.geom.Transform;
import flash.geom.Matrix;
var level = 1;
if (_parent._parent.type != "demo") {
        cameraFrame._visible = false;
        init();
}
//==================================
//don't tuch this :)
function init() {
        var oldMode = Stage.scaleMode;
        Stage.scaleMode = "exactFit";
        w = Stage.width;
        h = Stage.height;
        Stage.scaleMode = oldMode;
        recalcParentMatrix();
        cameraStep();
        onEnterFrame = cameraStep;
        onUnload = resetStage;
}
function recalcParentMatrix() {
        mc = _parent;
        if (level) {
                var i = level-1;
        } else {
                var i = 1000;
        }
        while (i-- && mc && mc != _root) {
                var tempTrans = new Transform(mc);
                if (!parentM) {
                        parentM = tempTrans.matrix;
                } else {
                        parentM.concat(tempTrans.matrix);
                }
                mc = mc._parent;
        }
        cameraTrans = new Transform(this);
        topLevelTrans = new Transform(mc);
        resetM = topLevelTrans.matrix;
        resetTopLevelColor = topLevelTrans.colorTransform;
}
function cameraStep() {
        topLevelTrans.colorTransform = cameraTrans.colorTransform;
        curM = cameraTrans.matrix;
        if (parentM) {
                curM.concat(parentM);
        }
        curM.invert();
        curM.translate(w/2, h/2);
        topLevelTrans.matrix = curM;
        //_root.filters = this.filters;
}
function resetStage():Void {
        topLevelTrans.matrix = resetM;
        topLevelTrans.colorTransform = resetTopLevelColor;
}

Но как заставить камеру "не высовываться" поверх всего, а работать только для игры пока не разобрался. Пробую методом "тыка" исправить в этом коде. Ваше мнение по этому поводу?..


Часовой пояс GMT +4, время: 05:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.