Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка и проигрывание swf через другой swf (http://www.flasher.ru/forum/showthread.php?t=155673)

ladnenko 08.05.2011 00:52

Загрузка и проигрывание swf через другой swf
 
Доброго времени суток.

Работаю в adobe flash, но к сожалению я не программист, нужна ваша помощь!

В первом swf файле есть кнопка и квадрат. При нажатии на кнопку необходимо чтобы в квадрате начал проигрываться второй swf файл, который находится в этой же папке.

буду премного благодарен за помощь!

in4core 08.05.2011 03:38

квадрату задайте instance name "sqr" почитайте в гугле если не знаете где его задавать. ( при этом квадрат должен быть мувиклипом MOVIECLIP ).
Далее загружаете swf с помощью методов load класса Loader.
Код AS3:

import flash.display.*;
var ld:Loader = new Loader();
ld.load(new URLRequest('путь к swf');
// если все в той же папке то просто  name.swf ( где name имя файла )


ladnenko 08.05.2011 15:26

Спасибо, вчера удалось самому решить проблему следующим кодом.
Код AS3:

var myrequest:URLRequest=new URLRequest("начало1.swf");
var myloader:Loader=new Loader();
myloader.load(myrequest);
stage.addChild(myloader);

Но теперь возникла другая проблема, 2ой swf проигрывается на всем экране, а не в квадрате. Вижу 2 решения, либо задать размеры грубо говоря подогнать. Либо как то через имя квадрата, делать воспроизводить в... и так далее.
К сожалению я не знаю как делать через имя =(
Надеюсь вы поможете сделать мне хотя бы подгоном. Вот написал код.
Код AS3:

myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, movieLoaded);
 
function movieLoaded(myevent:Event):void {
 
        var mycontent:MovieClip=myevent.target.content;
        mycontent.x=110;
        mycontent.y=200// левый верхний угол
 
}

Как задать параметры правого нижнего угла?

Flashrunner 08.05.2011 16:22

Цитата:

Сообщение от in4core (Сообщение 994738)
квадрату задайте instance name "sqr" почитайте в гугле если не знаете где его задавать. ( при этом квадрат должен быть мувиклипом MOVIECLIP ).
Далее загружаете swf с помощью методов load класса Loader.
Код AS3:

import flash.display.*;
var ld:Loader = new Loader();
ld.load(new URLRequest('путь к swf');
// если все в той же папке то просто  name.swf ( где name имя файла )


in4core, а зачем задавать instance name "sqr" и зачем вообще нужен этот квадрат, если он у вас не используется?

Psycho Tiger 08.05.2011 16:26

и
Код AS3:

addChild(ld);


in4core 08.05.2011 20:11

Цитата:

in4core, а зачем задавать instance name "sqr" и зачем вообще нужен этот квадрат, если он у вас не используется?
Ответ подразумевался для человека, который хоть немного соображает что делать. Если это не так - был бы вопрос после моего поста.


Цитата:

и
Код AS3:

addChild(ld);
Спасибо Кэп ))

ladnenko 08.05.2011 20:49

Ребят скажите просто как задать правый нижний угол и закончим на этом =)

Dukobpa3 08.05.2011 20:58

Цитата:

Сообщение от ladnenko (Сообщение 994838)
Спасибо, вчера удалось самому решить проблему следующим кодом.
Код AS3:

myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, movieLoaded);
 
function movieLoaded(myevent:Event):void {
 
        var mycontent:MovieClip=myevent.target.content;
        mycontent.x=110;
        mycontent.y=200// левый верхний угол
 
}

Как задать параметры правого нижнего угла?

ну во первых не
Код AS3:

stage.addChild(mycontent);

а
Код AS3:

имяКвадрата.addChild(mycontent);

Потом можно сделать двумя вариантами:
Код AS3:

mycontent.scaleX = mycontent.scaleY = 0.5//или другое значение, подбирается експериментально

Код AS3:

mycontent.width = someValue//устанавливаем ручками требуемую ширину в пикселях
mycontent.height = someValue//устанавливаем ручками требуемую высоту в пикселях


Psycho Tiger 08.05.2011 23:42

Цитата:

Ответ подразумевался для человека, который хоть немного соображает что делать.
Цитата:

но к сожалению я не программист
Теперь Вы поизображайте Капитана и расскажите, почему человек соображающий что делать обратился с этим вопросом.

ladnenko 09.05.2011 12:49

Код AS3:

mycontent.width = someValue//устанавливаем ручками требуемую ширину в пикселях
mycontent.height = someValue//устанавливаем ручками требуемую высоту в пикселях

Не работает. Слышу звук есть, изображения нет. Думал что оно воспроизводится в другом месте на экране, начал подбирать значения, это не дало результата.

i.o. 09.05.2011 13:26

Цитата:

Ребят скажите просто как задать правый нижний угол и закончим на этом =)
если вопрос про позиционирование дисплей обжекта по правому-нижнему углу, то например так:
Код AS3:

import flash.display.DisplayObject;
import flash.geom.Point;
import flash.geom.Rectangle;
 
 
setBottomRightFor( mcTest, 750, 450 );
 
 
function setBottomRightFor( obj:DisplayObject, rightX:Number, bottomY:Number, targetCoordSpace:DisplayObject=null ) : void
{
        if (!obj || isNaN(rightX) || isNaN(bottomY))
                return;
 
        targetCoordSpace ||= obj.parent || obj;
 
        var self00:Point = new Point( 0, 0 );
        var parent00:Point = (targetCoordSpace === obj) ? self00 : targetCoordSpace.globalToLocal( obj.localToGlobal( self00 ) );
        var parentRect:Rectangle = obj.getRect( targetCoordSpace );
 
        obj.x = rightX - (parentRect.right - parent00.x);
        obj.y = bottomY - (parentRect.bottom - parent00.y);
}

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

Добавлено через 13 минут
кстати, странно, что у in4core подобного в блогах нету. Очень удивлен..

in4core 09.05.2011 15:06

i.o. вы уже благословлены :) А по факту, зачем? когда это и так понятно

i.o. 09.05.2011 15:57

ну нет, так нет. Просто подумал, что у тебя уже было подобное


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

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