Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.09.2011, 17:21
CyberDude вне форума Посмотреть профиль Отправить личное сообщение для CyberDude Найти все сообщения от CyberDude
  № 1  
Ответить с цитированием
CyberDude
[+3 31.07.12]
[+1 27.08.13]
 
Аватар для CyberDude

Регистрация: Mar 2011
Адрес: 48.434715,35.032285
Сообщений: 56
Отправить сообщение для CyberDude с помощью Skype™
Attention Вызов метода AS3 из JavaScript

У меня задача, создать флешку с методом, который сохраняет входящий параметр в буфер обмена.
Столкнулся с ошибкой Error: Error calling method on NPObject.
Вызываю метод setValue у объекта EasyClipboard в консоли.
document.EasyClipboard.setValue("Hello World!")

Архив с примером в конце (тестировать с локального сервера).

Флешка:
обычная флешка 1 на 1 пиксель, main класс - EasyClipboard.as

EasyClipboard.as
Код AS3:
package
{
    import flash.external.*
    import flash.net.*;
    import flash.display.*;
    import flash.system.*;
 
    public class EasyClipboard extends Sprite 
	{
		function EasyClipboard():void 
		{
			ExternalInterface.marshallExceptions = true;
        	ExternalInterface.addCallback("setValue", setValue);
		}
 
		function setValue (text:String)
		{
			System.setClipboard(text);
		}
	}
}
EasyClipboard.html:
Код:
<embed 
src="EasyClipboard.swf" 
name="EasyClipboard" 
align="middle" 
play="true" 
loop="false" 
quality="high" 
allowscriptaccess="always" 
width="1" height="1" 
scale="exactfit" 
type="application/x-shockwave-flash" 
pluginspage="http://www.macromedia.com/go/getflashplayer">
Вложения
Тип файла: rar clipboard.rar (5.7 Кб, 42 просмотров)
__________________
Хоть ты эту красоту не назовёшь граблями, всё равно никогда не наступай на них.


Последний раз редактировалось CyberDude; 27.09.2011 в 18:44.
Старый 27.09.2011, 17:24
Cheburashka вне форума Посмотреть профиль Отправить личное сообщение для Cheburashka Найти все сообщения от Cheburashka
  № 2  
Ответить с цитированием
Cheburashka

Регистрация: Apr 2010
Сообщений: 43
По-моему нельзя так просто выполнить setToClipboard, из справки:
Цитата:
Заменяет содержимое буфера обмена заданной текстовой строкой. Этот метод работает в любом контексте безопасности, если вызывается в результате пользовательского события (например, обработчика события клавиатуры или устройства ввода).

Старый 27.09.2011, 17:51
CyberDude вне форума Посмотреть профиль Отправить личное сообщение для CyberDude Найти все сообщения от CyberDude
  № 3  
Ответить с цитированием
CyberDude
[+3 31.07.12]
[+1 27.08.13]
 
Аватар для CyberDude

Регистрация: Mar 2011
Адрес: 48.434715,35.032285
Сообщений: 56
Отправить сообщение для CyberDude с помощью Skype™
Цитата:
Сообщение от Cheburashka Посмотреть сообщение
По-моему нельзя так просто выполнить setToClipboard, из справки:
Копирование в буфер обмена работает. Не работает ExternalInterface.addCallback

Добавлено через 51 минуту
Цитата:
Сообщение от Cheburashka Посмотреть сообщение
По-моему нельзя так просто выполнить setToClipboard, из справки:
Прошу прощения, не разобрался! И в правду, копировать в буфер обмена не так просто. Кто может помочь?

Добавлено через 3 часа 2 минуты
Сейчас AS код выглядит так:
Код AS3:
package
{
    import flash.external.*
    import flash.net.*;
    import flash.display.*;
    import flash.system.*;
	import flash.desktop.*;
    import flash.text.TextField;
 
    public class EasyClipboard extends MovieClip 
	{
		public var my_text:TextField;
 
		public function EasyClipboard():void
		{
			stage.scaleMode = StageScaleMode.EXACT_FIT;
			ExternalInterface.marshallExceptions = true;
        		ExternalInterface.addCallback("setValue", setValue);
		}
 
		public function setValue (val:String):Boolean
		{
			my_text.text = val;
			flash.system.Security.allowDomain("localhost");
			Clipboard.generalClipboard.clear();
			Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, val);
			return true;
		}
	}
}
Поставил разрешение для localhost, всё равно не работает
__________________
Хоть ты эту красоту не назовёшь граблями, всё равно никогда не наступай на них.

Старый 03.11.2011, 18:17
CyberDude вне форума Посмотреть профиль Отправить личное сообщение для CyberDude Найти все сообщения от CyberDude
  № 4  
Ответить с цитированием
CyberDude
[+3 31.07.12]
[+1 27.08.13]
 
Аватар для CyberDude

Регистрация: Mar 2011
Адрес: 48.434715,35.032285
Сообщений: 56
Отправить сообщение для CyberDude с помощью Skype™
Забыл отписаться после решения проблемы.

Проблема была в том что Flash работает с буфером обмена только в случае если пользователь на что-то нажимает (как я понял)

Выход делать кнопку по нажатию на которую копируется некое содержимое кнопки. Примеров миллион. Нужен будет стучитесь)
__________________
Хоть ты эту красоту не назовёшь граблями, всё равно никогда не наступай на них.

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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