Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44

Программная анимация

07.02.2010, 00:53. Показов 1768. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовал вариант выпадающего меню с помощью списка и css. Начал реализовывать анимацию выпадающего меню и попал в калошу>_<.
Пускай у каждого элемента списка, у которого есть подсписок(то есть подменю), есть свой id.
При наведении на этот элемент, подэлемент(подсписок) медленно выпадает(то есть меняет значение width от 0 до заданного значения), при убирании курсора с элемента - сразу становится свернутым(меняет значение width на 0). В моей реализации понадобился статичный флаг, привязанный к одному подменю, но так как подменюшек может быть много, то я решил сделать все через объектную модель. и тут появились трудности.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//var debug = document.getElementById("output");
function menu_popup(elemId) //определяем класс
{
    this.elem = document.getElementById(elemId);//элемент
    this.forward=true; //флаг
    this.loop = true; //определяем переменную, привязанную к Interval
}
menu_popup.prototype.menu_open = function()
{
    var w = this.elem.clientWidth;
 
    this.loop = clearInterval(this.loop);
    this.elem.style.width = 0 + "px";
    var i=0;
    this.forward=true;
    this.loop = setInterval(function()
    {
        if(i<w && this.forward)
        {
            i+=2;
            this.elem.style.width = i + "px";
        }
        return true;
    }, 4);
}
menu_popup.prototype.menu_close = function()
{
    this.forward=false;
    clearInterval(this.loop);
    this.elem.style.width = 0 + "px";
}
var menu_popup_ex = new menu_popup("test");// "test" - id элемента
Броузер ругается на обращение к свойству this.elem класса menu_popup. Пишет, что
Cannot convert undefined or null to Object
В чем проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2010, 00:53
Ответы с готовыми решениями:

Программная установка курсора в текстовом поле в заданную позицию
есть, допустим такое текстовое поле: &lt;input type='Text' name='query' size='50' value='Установка курсора в текстовом...

Программная анимация
Добрый день! Помогите, пожалуйста. Нужно сделать программную анимацию по ключевым кадрам. Например квадрат перемещается вправо и...

Анимация в OpenGL, а где собсно, анимация?
// Bounce.cpp // Demonstrates a simple animated rectangle program with GLUT // OpenGL SuperBible, 3rd Edition // Richard S. Wright...

4
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
07.02.2010, 21:22
Теряется область видимости. Вы вызываете анонимную функцию, тем более с-ю window.setInterval. Ссылка this ссылается не на ваш обьект, а на обьект window/
0
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44
07.02.2010, 21:31  [ТС]
Цитата Сообщение от Vanstorm Посмотреть сообщение
Теряется область видимости. Вы вызываете анонимную функцию, тем более с-ю window.setInterval. Ссылка this ссылается не на ваш обьект, а на обьект window/
и как мне поступить тогда? простите я просто недавно стал изучать объектную модель, подскажите, как мне правильно написать код

пока что я просто тестирую, поэтому работаю просто с divами. ну то есть естьквадратик div , навожу на него мышь - другой див отрабатывает анимацию, убираю мышь - этот див прерывает анимацию
HTML5
1
2
3
<div id="test"></div>
<script type="text/jscript" language="javascript" src="menu.js"></script>
<div id="flag" onmouseover="menu_popup_ex.menu_open()" onmouseout="menu_popup_ex.menu_close()"></div>
0
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
08.02.2010, 17:12
вот это уже более конструктивный разговор Первое что лезет в голову - использование статических переменных или глобальных.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<style>
* {
border:solid;
}
</style>
<div id="test">div</div>
<SCRIPT LANGUAGE="JavaScript">//var debug = document.getElementById("output");
 
function menu_popup(elemId) //îïðåäåëÿåì êëàññ
{
        this.elem = document.getElementById(elemId);//ýëåìåíò
        this.forward=true; //ôëàã
        this.loop = true; //îïðåäåëÿåì ïåðåìåííóþ, ïðèâÿçàííóþ ê Interval
}
menu_popup.currentelement=null;
menu_popup.currentforward=null;
menu_popup.prototype.menu_open = function()
{
        var w = this.elem.clientWidth;
 
        this.loop = clearInterval(this.loop);
        this.elem.style.width = 0 + "px";
        var i=0;
        this.forward=true;
        menu_popup.currentelement=this.elem;
        menu_popup.currentforward=this.forward;
        this.loop = setInterval(function()
        {
                if(i<w && menu_popup.currentforward)
                {
                        i+=2;
                        menu_popup.currentelement.style.width = i + "px";
                }
                return true;
        }, 4);
}
menu_popup.prototype.menu_close = function()
{
        this.forward=false;
        clearInterval(this.loop);
        this.elem.style.width = 0 + "px";
}
var menu_popup_ex = new menu_popup("test");// "test" - id ýëåìåíòà
</SCRIPT>
<div id="flag" onmouseover="menu_popup_ex.menu_open()" onmouseout="menu_popup_ex.menu_close()">lbd</div>
1
2 / 2 / 0
Регистрация: 03.04.2009
Сообщений: 44
08.02.2010, 20:41  [ТС]
Vanstorm, спасибо, заработало)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2010, 20:41
Помогаю со студенческими работами здесь

Программная пауза
Доброго времени суток! Будьте добры, подскажите. Мне необходимо поставить паузу, так, чтобы для продолжения работы программы нужно было...

Программная привязка
Пишу код на GUI кнопку, по умолчанию я ее привязал к левому нижнему краю, а как можно в редакторе выбор сделать на привязку к другим углам?...

Авторизация в Vk программная
в общем дело в том решил попытатся зайти в вк программно!в общем поля,и пароль при нажатии на кнопку заполняются но на кнопку не...

Программная имитация
Добрый день, не могу справиться с проблемой: Есть tabcontrol и item (tabitem1, tabitem2) На первом при старте заполняется datagrid...

Программная среда с c++03
Посоветуйте программную среду, где можно писать на c++03 ? Именно на c++03, не c+11 или c++14.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru