Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Управление мовиклипом как целым (http://www.flasher.ru/forum/showthread.php?t=214614)

anda30 09.10.2017 16:19

Управление мовиклипом как целым
 
Вложений: 1
Всем привет
Помогите
Создал я Мувиклип из нескольких мовиклипов
Назвал я его D2.
Создал небольшой проект по его управлению.
Когда я запускаю проект, то я не могу двигать D2 как целым.
Получается двигать только по частям.
Не могу понять в чем моя ошибка?
С уважением
Александр

Код AS3:

import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.events.Event;
//import flash.ui.Mouse;
//import fl.controls.DataGrid;
//import fl.controls.Button;
 
var i,k:int;
var Kol_Dachikov=1;
var Zvz:DisplayObject;
var arr:Array = new Array();
var DvMouse:int=0;
var NDatch:int=0;
var str1:String;
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, DvigStart);
stage.addEventListener(MouseEvent.MOUSE_UP, DvigStop);
 
function DvigStart(e:MouseEvent){
        DvMouse=1;       
        if((e.target.name!=null))
                (e.target as MovieClip).startDrag();       
}
 
function DvigStop (e:MouseEvent){
        DvMouse=0;       
                {(e.target as MovieClip).stopDrag();}
}


undefined 09.10.2017 16:39

а имя мувиклипу назначено?

ZackMercury 09.10.2017 16:53

Уберите имя у частей, и дайте имя целому.

undefined 09.10.2017 17:03

и еще mouseChildren мувиклипу надо в false выставить

ZackMercury 09.10.2017 17:15

Не обязательно, у него перетаскиваются только те, которые имеют имя.

anda30 09.10.2017 17:23

Всем спасибо за оперативность
Буду пробовать

undefined 09.10.2017 17:44

Вложений: 1
Цитата:

Сообщение от ZackMercury (Сообщение 1202295)
Не обязательно, у него перетаскиваются только те, которые имеют имя.

Потяни за красный квадрат
test.swf   (21.5 Кб)


Код AS3:

private function init(e:Event = null):void 
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
                        container = new Sprite();
                        container.graphics.beginFill(0x0FF00, 1);
                        container.graphics.drawRect(0, 0, 100, 100);
                        container.name = "cont";
                        var sp:Sprite = new Sprite();
                        sp.graphics.beginFill(0xFF0000, 1);
                        sp.graphics.drawRect(0, 0, 50, 50);
                        container.alpha = 0.5;
                        container.addChild(sp);
                        addChild(container);
                        //container.mouseChildren = false;
                        stage.addEventListener(MouseEvent.MOUSE_DOWN, onMD);
                        stage.addEventListener(MouseEvent.MOUSE_UP, onMU);
                }
                private function onMD(e:MouseEvent):void
                {
                        if (e.target.name!=null)
                                e.target.startDrag();
                }
                private function onMU(e:MouseEvent):void
                {
                        e.target.stopDrag();
                }


ZackMercury 09.10.2017 18:01

А, точно, им же при отсутствии присваиваются номера)

anda30 10.10.2017 11:33

Еще раз всем спасибо.
Но у меня следующая задача
Я должен двигать этим мувиклипом как целым.
И этот мувиклип состоит из компонентов типа: "ComboBox", которым я должен управлять
Поэтому имена я должен присваивать
С уважением

undefined 10.10.2017 12:02

проще всего не слушать все события стейджа, а слушать все события твоего мувиклипа:
Код AS3:

//container - твой мувиклип
...
container.addEventListener(MouseEvent.MOUSE_DOWN, onMD);
container.addEventListener(MouseEvent.MOUSE_UP, onMU);
function onMD(e:MouseEvent):void {
        container.startDrag();
}
function onMU(e:MouseEvent):void {
        container.stopDrag();
}



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

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