PDA

Просмотр полной версии : Передача данных


Comer
27.03.2018, 16:10
Помогите, пожалуйста, исправить код!
Есть два swf-файла. Действия из второго swf передаются в первый swf. То есть, я открываю оба файла, и начинаю перетаскивать квадрат во втором swf, а два других в первом swf перемещается синхронно с тем, который я перетаскиваю. Но есть проблема. Как только я начинаю перетаскивание, то два квадрата из первого swf принимают начальные координаты того, который я таскаю во втором swf. Как сделать так, чтобы квадраты в первом swf НЕ принимали начальные координаты перетаскиваемого квадрата?

Код второго swf-файла:
var lc:LocalConnection = new LocalConnection();

addEventListener(MouseEvent.MOUSE_DOWN, mDown);
function mDown(event:MouseEvent):void
{
mc.startDrag(true, new Rectangle(0,0,550,400));
addEventListener(MouseEvent.MOUSE_MOVE, mMove);
}
addEventListener(MouseEvent.MOUSE_UP, mUp);

function mUp(event:MouseEvent):void
{
mc.stopDrag();
removeEventListener(MouseEvent.MOUSE_MOVE, mMove);
}

function mMove(event:MouseEvent):void
{
lc.send("myconnection", "go", mc.x, mc.y);
}

Код первого swf-файла:
var lc:LocalConnection = new LocalConnection();

lc.client = this;

lc.connect("myconnection");

function go(newX:uint,newY:uint)
{

mc1.x = newX;
mc1.y = newY;
mc2.x = newX;
mc2.y = newY;
}

Wolsh
27.03.2018, 17:32
var lc:LocalConnection = new LocalConnection();
var lastX:Number;
var lasY:Number;

addEventListener(MouseEvent.MOUSE_DOWN, mDown);
function mDown(event:MouseEvent):void
{
lastX = mc.x;
lastY = mc.y;
mc.startDrag(true, new Rectangle(0,0,550,400));
addEventListener(MouseEvent.MOUSE_MOVE, mMove);
}
addEventListener(MouseEvent.MOUSE_UP, mUp);

function mUp(event:MouseEvent):void
{
mc.stopDrag();
removeEventListener(MouseEvent.MOUSE_MOVE, mMove);
}

function mMove(event:MouseEvent):void
{
lc.send("myconnection", "go", mc.x - lastX, mc.y - lastY);
lastX = mc.x;
lastY = mc.y;
}

mc1.x += newX;
mc1.y += newY;
mc2.x += newX;
mc2.y += newY;

как-то так.. если направления не попутал

Comer
27.03.2018, 17:52
как-то так.. если направления не попутал
Ошибку исправил, но всё равно не работает. Оба квадрата уходят в левый верхний угол ролика, а когда начинаю перетаскивать , то вообще уходят со сцены.

ZergMaster
27.03.2018, 19:06
рекомендую воспользоваться trace() для прояснения обстановки

Comer
27.03.2018, 20:05
Я не знаю как им пользоваться. Я ещё только учусь.

ZergMaster
27.03.2018, 22:10
а через что вы компилите?

Comer
27.03.2018, 22:43
а через что вы компилите?
Adobe Animate CC

ZackMercury
27.03.2018, 22:47
рекомендую воспользоваться trace() для прояснения обстановки
Я не знаю как им пользоваться. Я ещё только учусь.
http://uroki-flash-as3.ru/uroki-actionscript-3/metod-trace-actionscript.html

Wolsh
28.03.2018, 00:02
уходят в левый верхний уголВы точно исправили mc1.x = newX; на mc1.x += newX ?
И да, в приемнике функции go() надо заменить тип параметров на Number или хотя бы int.
Ведь uint не бывает отрицательным и преобразуется в огромное положительное число ("уходят с экрана").

Comer
28.03.2018, 06:55
Вы точно исправили mc1.x = newX; на mc1.x += newX ?
И да, в приемнике функции go() надо заменить тип параметров на Number или хотя бы int.
Ведь uint не бывает отрицательным и преобразуется в огромное положительное число ("уходят с экрана").

Теперь работает. Спасибо большое!!!