Форум 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)
-   -   Не получается перемещение объектов по координатам (http://www.flasher.ru/forum/showthread.php?t=115603)

katrisha 04.09.2008 13:16

Не получается перемещение объектов по координатам
 
Вложений: 2
Добрый день!
Проблема с перетаскиванием объектов, помогите пожалуйста разобраться!

Можно ли сделать так:

исходник (hr-dannyh)
1. Перетаскиваются ВСЕ объекты ( это просто, это у меня получается).
2. Те, которые не подходят по смыслу просто отпрыгивают обратно ( вот тут как раз проблема).

исходник (2-umet-2-2):
1. Перетаскиваются ВСЕ объекты.
2. Если объект попадает не в свою ячейку, то он прыгает обратно. Если в
свою - остается там жить ( наверное здесь надо задавать координаты? что-то никак не дотумкаю как сделать...)

Очень надеюсь на вашу помощь!

Wolsh 04.09.2008 13:22

Обычно в таких случаях используют не сравнение координат, а hitTest();
Посмотрите в хелпе, у этого метода есть два варианта - проверка, пересекается ли клип А с клипом В, и другой - пересекает ли клип А точку с заданными координатами.
При отпускании таскаемого клипа делаете проверку - пересекает ли он положенную ему ячейку. Если нет - то возврат, если да - то упаковка. Удачи.

katrisha 05.09.2008 13:34

hitTest
 
Вложений: 1
Спасибо большое! нашла такое в хелпе, стала разбираться. даже получилось кое что.
Но есть два вопроса:
1. Как можно сделать чтобы "status_txt" писал по русски верно и не верно, а не false и true?
2. Как применить подобное действие для других объектов? У меня в примере таких объектов три, а запустить я смогла только один...
Посоветуйте пожалуста!
Исходник прилагаю.

qazwsx 05.09.2008 13:51

Код:

status_txt.text = this.hitTest(bab)? 'верно':'не верно';

Mur4ik 05.09.2008 14:35

Вложений: 1
вот мой вариант:

qazwsx 05.09.2008 14:44

Зачем 3 оденаковые функции? Таким примером ты только испортиш автору жизнь. Дал готовый код хотя и кривой o_O.

Зачем тут апдейт афтер эвент? Хит тест каждой картинки идет только пока она тащится. Т.е не правильно не вылизет пока ты не заташиш неправильную картинку в арею и не начнеш ташить правильную :)

qazwsx 05.09.2008 14:58

На основе этого можно сделать еше тысячи ошибок и в итоге все начать сначала.

P,S Ладно тогда в функции лишняя праверка:/

Mur4ik 05.09.2008 15:02

согласен... ща испарвлюсь ;)

Mur4ik 05.09.2008 15:34

Вложений: 1
вот так чуток получше:

qazwsx 05.09.2008 15:58

А если положить скажем бабку в арея бабка, а патом взять поезд. То что будет в текстовом поле арея бабка?)

Mur4ik 05.09.2008 16:08

Цитата:

Сообщение от qazwsx (Сообщение 762527)
А если положить скажем бабку в арея бабка, а патом взять поезд. То что будет в текстовом поле арея бабка?)

ну Вы уж совсем хотите все на "блюдечке с голубой коемочкой", пускай человек немного голову поломает, разберется - если не получится поможем :)

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

katrisha 05.09.2008 18:07

Спасибо большое, файл скачала сейчас буду разбираться.

katrisha 07.09.2008 21:30

Вопросы возникли :)
 
Вложений: 1
На самом деле получилось, спасибо! Но все же мозги у меня трудно под программирование затачиваются, рисовать то это одно...
Вообщем вовросы все таки возникли.
Скажем если объектов не три, а пять? Или четыре? Или еще больше? У меня есть задание где их даже шесть... Что делать в таком случае? Вот я не очень поняла что такое
source_txt
target_txt
provider_txt

То есть для трех объектов понятно. А что писать для четвертого и пятого? Вот в подобном примере?

Mur4ik 07.09.2008 22:50

Вложений: 1
Чтобы присвоить программно текст какому-то текстовому полю,
нужно обратиться к нему по имени (задается это имя в панели "Properties"), так вот source_txt, target_txt, provider_txt это имена текстовых полей в которых мы пишем "правильно", "не правильно"...

Попробуйте альтернативный вариант:

qazwsx 08.09.2008 12:23

Код:

_root[this._name + "_txt"].text = "правильно";

var txt:TextField = _root[this._name + "_txt"];
txt.text = "правильно";

Не будеш же ты везде писать _root[this._name + "_txt"]? Зачем плохому учиш)

katrisha 08.09.2008 13:09

Вот это классно, все понятно, спасибо большое-пребольшое!!! Доделала там термометр. Сама :) Сейчас попробую применить это для остальных примеров, где больше или меньше объектов.
Есть еще один вопрос правда, можно я его задам, как сделаю заготовку для исходника?

Mur4ik 08.09.2008 13:12

Цитата:

Сообщение от qazwsx (Сообщение 762952)
...Не будеш же ты везде писать _root[this._name + "_txt"]? Зачем плохому учиш)

Что ты за человек такой?
Ты бы свои замечания в код вставил и здесь полностью для человека привел...да и расписал бы почему и менно так а не иначе...
Я сам еще учусь, а ты стебаешься без конца
Ты если помочь хочешь - так помоги, а если просто по умничать, то это лучше в другом месте...

Для katrisha:
замените весь код на следующий

Код:

function isCorrect():Void {
    var tCorrect:TextField = _root[this._name + "_txt"]; // создаем ссылку на текстовое поле
    this.startDrag();
    this.onEnterFrame = function() {
        if (this.hitTest(_root["area_" + this._name])){
            tCorrect.text = "правильно";
        } else {
            tCorrect.text = "";
        }
    };
}

bar.onPress = mikr.onPress = lin.onPress = tel.onPress = bar.onPress = isCorrect;

bar.onRelease = mikr.onRelease = lin.onRelease = tel.onRelease = bar.onRelease = function() {
    this.stopDrag();
    delete this.onEnterFrame;
};


Wolsh 08.09.2008 13:25

Какая-то странная задачка у Вас - таскать картинку, пока не появится слово "Правильно", и тогда отпускать? Разве проверка правильности не после отпускания должна делаться?

Mur4ik 08.09.2008 13:48

Цитата:

Сообщение от Wolsh (Сообщение 762967)
Какая-то странная задачка у Вас - таскать картинку, пока не появится слово "Правильно", и тогда отпускать? Разве проверка правильности не после отпускания должна делаться?

Можно конечно и так, но с точки зрения юзабельности это лишнее действие для пользователя: поднеси - отпусти - если не правильно, то схвати - утащи - возьми другой - поднеси и т.д.

удобнее же когда просто поднес и сразу видно отпускать или тащить дальше, не так ли?

Для разработчика конечно это лишние телодвижения :), но для пользователя это поднимает дружественность интерфейса и удобство

katrisha 08.09.2008 15:44

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

Wolsh 08.09.2008 16:00

Чёто я еще больше запутался) katrisha, объясните смысл происходящего пожалуйста. Я думал это загадка, а выходит какаято инструкция? Что должно происходить, опишите задачу. Из исходника совершенно непонятно, чего требуется достичь.

Mur4ik 08.09.2008 16:30

Посмотрел исходник, прочитал сообщение и ничего не понял что именно Вы хотите? :)

Чтоб менялись смайлики удобнее сделать в клипе каждого смайла по два кадра в первом "угрюмый" во втором "улыбающийся" и потом в зависимости от нужных условий
имя_смайла.gotoAndStop(1) - прыжок на 1 кадр смайла - не улыбается
или
имя_смайла.gotoAndStop(2) - прыжок на 2 кадр смайла - улыбается

katrisha 09.09.2008 13:18

Я попробую.
А хочу я вот что - когда тянется правильное слово - смайлик улыбается, если неправильное - то он недоволен. Я сделала два слоя, на одном разместила все улыбающиеся смайлики, на другом все грустные. Просто наверно я очень шаблонно мыслю, пыталась сделать все по образу и подобию, как в случае с текстовыми блоками правильно-пеправильно.


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

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