Форум 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=81741)

Artyom from Kiev 26.06.2006 19:27

Подскажите как с имитировать нажатие кнопки
 
Подскажите пожалуйста возможно ли такое на AS, нужно с имитировать нажатие кнопки на клавиатуре, разъясню по подробней во время проигрывание ролика нужно кодом вызвать что была нажата кнопка например в лево но при это пользователь ничего на клавиатуре не нажимал... возможно ли это?:wacko:

заранее благодарен

Nirth 26.06.2006 19:56

Так сделать нельзя, но можно обойти это, создав методы которые выполняют определенные действия, и уже их вызывать когда тебе надо ( по нажатию кнопки\мышки и тд)
Код:

//создаем функцию которая рисует круг
function drawCircle(x:Number,y:Number,radius:Number,text:String):MovieClip
{
        var depth:Number = getNextHighestDepth();
        var result:MovieClip = createEmptyMovieClip("circle_"+depth+"_mc",depth);
        result.lineStyle(radius,0xFF6600);
        result.moveTo(0,0);
        result.lineTo(.5,.5);
        if(text != undefined)
        {
                var label:TextField = result.createTextField("label_txt",1,0,0,0,0);
                label.text = text;
                label.autoSize = true;
                label.selectable = false;
        }
        result._x = x;
        result._y = y;
        return result;
}
//рисуем круг который будем двигать
var circle:MovieClip = drawCircle(Stage.width/2-10,Stage.height/2-1,20);
//рисуем кнопки
var left:MovieClip = drawCircle(25,Stage.height-50,50,"Left");
var right:MovieClip =drawCircle(Stage.width-25,Stage.height-50,50,"Right");
//Функция которая двигает sqr_mc влево
function moveLeft():Void
{
        circle._x -=5;
}
//двигает в право
function moveRight():Void
{
        circle._x +=5;
}
//создаем листенер для класса Key
var keyListener:Object = new Object();
//создаем обработчик события, реагирующий на нажатие кнопки
keyListener.onKeyDown = function ():Void
{
        //если нажата LEFT то двигаем влево
        if(Key.getCode() == Key.LEFT)
        {
                moveLeft();       
        }
        //если RIGHT то двигаем вправо
        else if(Key.getCode() == Key.RIGHT)
        {
                moveRight();
        }
}
//подписываем слушателя на событие.
Key.addListener(keyListener);
//определяем обработчики событий для кнопок
left.onRelease = moveLeft;
right.onRelease = moveRight;


Artyom from Kiev 26.06.2006 20:41

К сожелению в моем случае это нельзя обойти мне нужно именно чтоб комп думал что была нажата кнопка, у меня есть swf которая генериться не во флэше, для того чтоб произошло какое-то действия должна нажаться кнопка клавы или мыши... вот и мучаюсь...

etc 26.06.2006 21:03

Код:

anyObject = new Object();
anyObject.onKeyDown = function(keyCode) {
        if (keyCode != undefined) {
                trace('A virtual key is down!');
        } else {
                keyCode = Key.getCode();
                trace('A real key is down!');
        }
        if (keyCode==Key.LEFT) {
                trace('Left key is down (virtual or real)');
        }
};
Key.addListener(anyObject);
var method = Function(Key['broadcastMessage']);
method.call(Key, 'onKeyDown', Key.LEFT);

Нате. Это хак, сразу предупреждаю.
Проверка Key.isDown не работает, если в аргументе функции что-то есть -- это код клавиши (в данном случае Key.LEFT), которая "нажата" программно. Если в аргументе ничего нет, то нажата реальная клавиша.


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

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