PDA

Просмотр полной версии : Почему криво?


went
13.11.2006, 10:17
Люди, проблема в следующем: есть объект - при клике на котором создаётся копия которую надо переместить в некоторую область, областей этих 5, если он отпускается вне области - копия удаляется, если в - то в точку с координатами. Область - мувик. Для 1,2,3,5 работает нормально, для 4-го помещает в область ???ПЯТОГО???, если убрать координаты у пятого то в четвёртом ложиться нормально, но тогда в пятом ложиться не совсем как надо... Немного сбивчиво, но более понятно изложить не получается, надеюсь поймёте

_root.muhSamBel.onPress = function() {
attachMovie("muhSamBel", "muhSamBel"+i, i, {_x:0, _y:0});
_root.n1 = "i: "+i;
_root["muhSamBel"+i].startDrag(true);
};
_root.muhSamBel.onRelease = _root.muhSamBel.onReleaseOutside=function () {
// _root.n2 = "i: "+ i;
_root["muhSamBel"+i].stopDrag();
if ((_root["muhSamBel"+i]._x>XY_b._x) and (_root["muhSamBel"+i]._x<(XY_b._x+XY_b._width)) and (_root["muhSamBel"+i]._y>XY_b._y-20) and (_root["muhSamBel"+i]._y<(XY_b._y+XY_b._height)) or
(_root["muhSamBel"+i]._x>XY_b5._x) and (_root["muhSamBel"+i]._x<(XY_b5._x+XY_b5._width)) and (_root["muhSamBel"+i]._y>XY_b5._y-20) and (_root["muhSamBel"+i]._y<(XY_b5._y+XY_b5._height)) or (_root["muhSamBel"+i]._x>XY_b2._x) and (_root["muhSamBel"+i]._x<(XY_b2._x+XY_b2._width)) and (_root["muhSamBel"+i]._y>XY_b2._y-/*20*/5) and (_root["muhSamBel"+i]._y<(XY_b2._y+XY_b2._height)) or (_root["muhSamBel"+i]._x>XY_b3._x) and (_root["muhSamBel"+i]._x<(XY_b3._x+XY_b3._width)) and (_root["muhSamBel"+i]._y>XY_b3._y-5) and (_root["muhSamBel"+i]._y<(XY_b3._y+XY_b3._height)) or (_root["muhSamBel"+i]._x>XY_b4._x) and (_root["muhSamBel"+i]._x<(XY_b4._x+XY_b4._width)) and (_root["muhSamBel"+i]._y>XY_b4._y-5) and (_root["muhSamBel"+i]._y<(XY_b4._y+XY_b4._height))) {
if ((_root["muhSamBel"+i]._y>XY_b._y-20) and (_root["muhSamBel"+i]._y<(XY_b._y+XY_b._height))) {
_root["muhSamBel"+i]._x = XY_b._x+XY_b._width/2+15;
_root["muhSamBel"+i]._y = XY_b._y+12;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}



if ((_root["muhSamBel"+i]._y>XY_b2._y-5) and (_root["muhSamBel"+i]._y<(XY_b2._y+XY_b2._height))) {
_root["muhSamBel"+i]._x = XY_b2._x+XY_b2._width/2+5;
_root["muhSamBel"+i]._y = XY_b2._y;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}

if ((_root["muhSamBel"+i]._y>XY_b3._y-5) and (_root["muhSamBel"+i]._y<(XY_b3._y+XY_b3._height))) {
_root["muhSamBel"+i]._x = XY_b3._x+XY_b3._width/2+5;
_root["muhSamBel"+i]._y = XY_b3._y;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}


if ((_root["muhSamBel"+i]._y>XY_b4._y-5) and (_root["muhSamBel"+i]._y<(XY_b4._y+XY_b4._height))) {
_root["muhSamBel"+i]._x = XY_b4._x+XY_b4._width/2+5;
_root["muhSamBel"+i]._y = XY_b4._y;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}

if ((_root["muhSamBel"+i]._y>XY_b5._y-20) and (_root["muhSamBel"+i]._y<(XY_b5._y+XY_b5._height))) {
_root["muhSamBel"+i]._x = XY_b5._x+XY_b5._width/2+15;
_root["muhSamBel"+i]._y = XY_b5._y+12;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}



Ещё... если 5-й мувик ператащить в другое место - всё работает как надо

Double
13.11.2006, 11:31
а hitTest-ом не было мыслей попользоваться?..

_sestra_
13.11.2006, 11:31
1) Выложенный скрипт - с ошибками
2) Выложи весь скрипт, я думаю, что это не всё
3) Лучше выложи исходник
4) Объясни ещё раз твою ошибку ( даже засунув твой скрипт во флаш, не понятно что и как должно работать )

went
13.11.2006, 12:31
Вот весь скрипт
Смысл следующий: имеется картинка
при переносе на определённую ячеку (таких ячеек 5) выдаётся сообщение правильно,
мимо - не правильно, ведётся подсчёт.
Для 1,2,3 работает нормально для 5-го нормально для 4-го криво
если я убираю 5-й или 4-й мувик ячейку в кординально другое место - работает, возвращаю - опять криво



var i = 2;
j = 1;
k=1;
Result_1 = new Array(96);
Result_2 = new Array(96);
//Result2 = new Array(96);

for (var i=1; i<=96; i++)
{
Result_1[i]='';
Result_2[i]='';
}
//----------------------------------------------------------------------------------
_root.muhSamBel.onPress = function() {
attachMovie("muhSamBel", "muhSamBel"+i, i, {_x:0, _y:0});
_root.n1 = "i: "+i;
_root["muhSamBel"+i].startDrag(true);
};
_root.muhSamBel.onRelease = _root.muhSamBel.onReleaseOutside=function () {
// _root.n2 = "i: "+ i;
_root["muhSamBel"+i].stopDrag();
if ((_root["muhSamBel"+i]._x>XY_b._x) and (_root["muhSamBel"+i]._x<(XY_b._x+XY_b._width)) and (_root["muhSamBel"+i]._y>XY_b._y-20) and (_root["muhSamBel"+i]._y<(XY_b._y+XY_b._height)) or
(_root["muhSamBel"+i]._x>XY_b5._x) and (_root["muhSamBel"+i]._x<(XY_b5._x+XY_b5._width)) and (_root["muhSamBel"+i]._y>XY_b5._y-20) and (_root["muhSamBel"+i]._y<(XY_b5._y+XY_b5._height)) or (_root["muhSamBel"+i]._x>XY_b2._x) and (_root["muhSamBel"+i]._x<(XY_b2._x+XY_b2._width)) and (_root["muhSamBel"+i]._y>XY_b2._y-/*20*/5) and (_root["muhSamBel"+i]._y<(XY_b2._y+XY_b2._height)) or (_root["muhSamBel"+i]._x>XY_b3._x) and (_root["muhSamBel"+i]._x<(XY_b3._x+XY_b3._width)) and (_root["muhSamBel"+i]._y>XY_b3._y-5) and (_root["muhSamBel"+i]._y<(XY_b3._y+XY_b3._height)) or (_root["muhSamBel"+i]._x>XY_b4._x) and (_root["muhSamBel"+i]._x<(XY_b4._x+XY_b4._width)) and (_root["muhSamBel"+i]._y>XY_b4._y-5) and (_root["muhSamBel"+i]._y<(XY_b4._y+XY_b4._height))) {
if ((_root["muhSamBel"+i]._y>XY_b._y-20) and (_root["muhSamBel"+i]._y<(XY_b._y+XY_b._height))) {
_root["muhSamBel"+i]._x = XY_b._x+XY_b._width/2+15;
_root["muhSamBel"+i]._y = XY_b._y+12;
// +XY_B._height/2;
_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}



if ((_root["muhSamBel"+i]._y>XY_b2._y-5) and (_root["muhSamBel"+i]._y<(XY_b2._y+XY_b2._height))) {
_root["muhSamBel"+i]._x = XY_b2._x+XY_b2._width/2+5;
_root["muhSamBel"+i]._y = XY_b2._y;
// +XY_B._height/2;
_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}

if ((_root["muhSamBel"+i]._y>XY_b3._y-5) and (_root["muhSamBel"+i]._y<(XY_b3._y+XY_b3._height))) {
_root["muhSamBel"+i]._x = XY_b3._x+XY_b3._width/2+18;
_root["muhSamBel"+i]._y = XY_b3._y;
// +XY_B._height/2;
_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}


if ((_root["muhSamBel"+i]._y>XY_b4._y-5) and (_root["muhSamBel"+i]._y<(XY_b4._y+XY_b4._height))) {
_root["muhSamBel"+i]._x = 50;//XY_b4._x+XY_b4._width/2+5;
_root["muhSamBel"+i]._y = XY_b4._y;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}


if ((_root["muhSamBel"+i]._y>XY_b5._y-20) and (_root["muhSamBel"+i]._y<(XY_b5._y+XY_b5._height))) {
_root["muhSamBel"+i]._x = XY_b5._x+XY_b5._width/2+15;
_root["muhSamBel"+i]._y = XY_b5._y+12;

_root["muhSamBel"+i]._height = _root["muhSamBel"]._height*0.5;
_root["muhSamBel"+i]._width = _root["muhSamBel"]._width*0.5;
}



Result_1[j] = j;
Result_2[j] = "Правильно";

if (j<=6)
{
k=0
}
else if (j<=12)
{
k=1
}
else if (j<=18)
{
k=2
}
else if (j<=24)
{
k=3
}
else if (j<=30)
{
k=4
}
else if (j<=36)
{
k=5
}
else if (j<=42)
{
k=6
}
else if (j<=48)
{
k=7
}else if (j<=54)
{
k=8
}
else if (j<=60)
{
k=9
}
else if (j<=66)
{
k=10
}
else if (j<=72)
{
k=11
}
else if (j<=78)
{
k=12
}
else if (j<=84)
{
k=13
}
else if (j<=90)
{
k=14
}
else if (j<=96)
{
k=15
}

for (var n = (j-6*k); n<=6; n++) {
_root["ResNum"+n] = '';
_root["ResName"+n] = '';
}
_root["ResNum"+(j-6*k)] = Result_1[j];
_root["ResName"+(j-6*k)] = Result_2[j];

// ---------------------
attachMovie("Rezult1", "Rezult", 5, {_x:_root._width/2, _y:_root._height/2});
onEnterFrame = function () { if (Key.isDown(1)) {removeMovieClip(Rezult);_root.P1.removeMovieClip();}};
i++;
j++;
} else {
removeMovieClip(_root["muhSamBel"+i]);
Result_1[j] = j;
Result_2[j] = "Не правильно";

if (j<=6)
{
k=0
}
else if (j<=12)
{
k=1
}
else if (j<=18)
{
k=2
}
else if (j<=24)
{
k=3
}
else if (j<=30)
{
k=4
}
else if (j<=36)
{
k=5
}
else if (j<=42)
{
k=6
}
else if (j<=48)
{
k=7
}else if (j<=54)
{
k=8
}
else if (j<=60)
{
k=9
}
else if (j<=66)
{
k=10
}
else if (j<=72)
{
k=11
}
else if (j<=78)
{
k=12
}
else if (j<=84)
{
k=13
}
else if (j<=90)
{
k=14
}
else if (j<=96)
{
k=15
}

for (var n = (j-6*k); n<=6; n++) {
_root["ResNum"+n] = '';
_root["ResName"+n] = '';
}
_root["ResNum"+(j-6*k)] = Result_1[j];
_root["ResName"+(j-6*k)] = Result_2[j];

// ---------------------
j++;
attachMovie("Rezult2", "Rezult", 5, {_x:_root._width/2, _y:_root._height/2});
onEnterFrame = function () { if (Key.isDown(1)) {removeMovieClip(Rezult);}};
}
};
//*************************************


//кнопка перемотки таблицы
_root.verh.onPress = function() {
if (k>0){
k--
kr=k;
for (var i=1; i<=6; i++)
{


_root["ResNum"+i] =Result_1[i+6*k];//j-2;
_root["ResName"+i] =Result_2[i+6*k];//j-2;


} }

}

//*************************************
//кнопка перемотки таблицы вниз
_root.niz.onPress = function() {
if (k<=4){
kr=k;
for (var i=1; i<=6; i++)
{
_root["ResNum"+i] =Result_1[i+6*k];//j-2;
_root["ResName"+i] =Result_2[i+6*k];//j-2;
}
k++}
};

went
13.11.2006, 12:33
а hitTest-ом не было мыслей попользоваться?..
ет что?

Double
13.11.2006, 12:44
а ещё есть дивный _droptarget. всё это богатство доступно любому, при нажатии на кнопочку F1.

went
13.11.2006, 12:59
а ещё есть дивный _droptarget. всё это богатство доступно любому, при нажатии на кнопочку F1.
более хреновой справки чем во Flash Mx, я честно говоря не видел, но всё же спасибо за совет - гляну.

_sestra_
13.11.2006, 13:06
Кстати совет: Слазь ты уже с Flash MX + скачай переведённый хелп с этого форума http://flasher.ru/forum/showthread.php?t=72459

went
13.11.2006, 13:13
Кстати совет: Слазь ты уже с Flash MX + скачай переведённый хелп с этого форума http://flasher.ru/forum/showthread.php?t=72459
сенкс, какой посоветуете? 8-ку?

went
13.11.2006, 13:23
а hitTest-ом не было мыслей попользоваться?..
"MovieClip.hitTest Выполняет проверку наложения объекта на точку с указанными координатами"
точка и область пространства вещи несколько разные...

etc
13.11.2006, 14:00
went, а до конца дочитать не пробовали?

went
13.11.2006, 15:03
дочитал... сделал, заработало
спасибо

_sestra_
13.11.2006, 15:07
сенкс, какой посоветуете? 8-ку?

- Да, 8-рка. FlashPlayer уже достаточно распространился на просторах инета.
- И ещё: купи книгу по Флешу, кпримеру Гурского. Ну а идеальный вариант: Колин Мук ;)

went
13.11.2006, 16:05
И ещё: купи книгу по Флешу, кпримеру Гурского. Ну а идеальный вариант: Колин Мук

сенкс за совет

если кому интересно, то когда области (мувики) на которые должны быть перенесены объекты находяться слишком близко, а объекты по размерам сопоставимы области - возникают весёлые глюки... из-за пересечения областей.