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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.05.2013, 22:26
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 11  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Огромное спасибо, сейчас изучу))) Пока сидел, вот такую штуку затестил, что тоже работает

Код AS3:
addEventListener(Event.COMPLETE, completeEvent);
 
function completeEvent(e:Event):void{
	trace("complete!");
	fl_ClickToLoadUnloadSWF(new MouseEvent(MouseEvent.CLICK));
	removeEventListener(Event.COMPLETE, completeEvent);
	gotoAndStop(2);
 
	}
...

Код AS3:
function clickLis(e:MouseEvent):void{
	trace("click!");
	trace(1234);
	parent.parent.parent.parent.dispatchEvent(new Event(Event.COMPLETE));
	}
Еще раз Спасибо!

Старый 30.05.2013, 22:29
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 12  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
можно еще конечно и на прямую вызывать команды из интернала в экстернал, но там чуть сложнее.
__________________
return this...

Старый 30.05.2013, 23:07
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 13  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Вот это немного напрягло, весь код в кадрах. Не даёт объявить public вне пакета.
Scene 1, слой "Actions", кадр 1, строка 41 1114: Атрибут "public" может использоваться только внутри пакета.
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
Код AS3:
public var externalData:*;
Просто, если бы давало, то можно же было вот так напрямую обращаться к функциям в enternal:

Код AS3:
var swfController:Loader = new Loader();
swfController.contentLoaderInfo.addEventListener(Event.COMPLETE, setMagic );
swfController.load(new URLRequest('internal.swf'));
 
function setMagic(e:Event):void {
 swfController.content.addEventListener('COMMAND', internalHandler);
}
 
function internalHandler(e:Event):void {
 trace('Internal '+e.target.externalData);
 
function checker():void{
trace("it works!");
}
}
Код AS3:
public var externalData:*;
 
addEventListener(Event.ADDED_TO_STAGE, crosscomand);
 
function crosscomand(e:Event):void {
externalData = 'пихаем данные';
dispatchEvent(new Event('COMMAND'));
parent.parent.parent.parent.checker(); // по идее, должно работать. 
}
А как написать в кадре код на уровне пакета? Прошу прощения за оффтоп. Буду очень признателен.

Старый 30.05.2013, 23:19
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 14  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Сейчас найду свой исходник.

Добавлено через 19 минут
Писать пора не в кадрах иначе ничего толкового не получиться.

Постараюсь объяснить что тут и как. Все что не прокомментированно пропускайте. Естественно адаптируйте под свои задачи

Main
Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	import flash.display.StageScaleMode;
 
	import multiapi.MultiConnector;
	import flash.system.Security;
 
 
	public class Preloader extends Sprite {
 
		var cont:Sprite = new Sprite();
 
		public function Preloader() {		
 
			addChild(cont);
 
			stage.scaleMode = "noScale";
 
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event=null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			MultiConnector.stage = cont;
			MultiConnector.connected('inquestion_v2.26.swf');
 
		}
 
		//  A. Получить доступ 
		public function get external():Object {
			return MultiConnector.external;
		}
	}
}
MultiConnector
Код AS3:
package multiapi {
 
	import flash.events.Event;
	import flash.display.Sprite;
	import flash.display.Stage;
 
	import multiapi.data.GlobalData;
 
	public class MultiConnector extends Object {
 
		public static var stage:Sprite;
 
		// статическая ссылка на класс
		protected static var _instance:*;
 
		public function MultiConnector(){}
 
		// B. возвращаем класс 
		public static function get external():Object {
 
			GlobalData.log.add('get external');
 
			// класс который будет доступен внутренему клипу
			if (!_instance) _instance = GlobalData.api;
 
			GlobalData.log.add('external ready');
 
			return _instance;
		}
 
		public static function connected($url:String):void {
 
			stage.addChild(GlobalData.log);
 
			GlobalData.api.init();
 
			GlobalData.loader.add($url, {'id':'main'});
			GlobalData.loader.get('main').addEventListener(Event.COMPLETE, loadingMainComplete);
			GlobalData.loader.start();
 
		}
 
		private static function loadingMainComplete(e:Event):void {
 
			GlobalData.loader.get('main').removeEventListener(Event.COMPLETE, loadingMainComplete);
			GlobalData.main = GlobalData.loader.getContent('main',true);
 
			while (GlobalData.mainTurn.length) {
				GlobalData.core.callMain(GlobalData.mainTurn[0].using,GlobalData.mainTurn[0].data);
				GlobalData.mainTurn.shift();
			}
			stage.addChild(GlobalData.main);
		}
 
	}
}
GlobalData
Код AS3:
package multiapi.data {
 
	import multiapi.Core;
	import multiapi.connector.UnitedAPI;
	import multiapi.logger.Logger;
	import multiapi.processor.Poster;
 
	import br.com.stimuli.loading.BulkLoader;
 
	import flash.display.MovieClip;
 
 
	public class GlobalData extends Object {
 
		public function GlobalData() {
 
		}
 
		{
			// собственно сам класс 
			api = new UnitedAPI();
			core = new Core();
			log = new Logger();
			loader = new BulkLoader("loader");
			poster = new Poster();
 
			cache = new Object();
			mainTurn = new Array();
 
			devApi = 'vk';
		}
 
		public static var core:Core;
		public static var log:Logger;
		public static var loader:BulkLoader;
		public static var api:UnitedAPI;
 
		public static var poster:Poster;
 
		public static var account:Object;
		public static var cache:Object;
 
		public static var main:MovieClip;
		public static var mainTurn:Array;
 
		public static var devApi:String;
	}
}
Все публичные свойства и методы этого класса будут доступны
UnitedAPI
Код AS3:
package multiapi.connector {
 
	import flash.display.Sprite;
 
	import vk.VKConnection;
	import vk.events.*;
 
	import fs.FSConnection;
 
	import com.adobe.serialization.json.JSON;
 
	import multiapi.data.GlobalData;
 
	import flash.events.Event;
 
	public class UnitedAPI extends Sprite {
 
		protected var status:Object;
 
		public var version = "vk";
 
		public var me:Object = new Object();
		public var api2:Object = new Object();
		public var app:Object = new Object();
 
		private var ex:External = new External();
 
		public var multi:*;
 
		public function UnitedAPI() {
			status = new Object();
		};
 
		public function init():void {
 
			if (status.ex) return;
 
			ex.init();
 
			status.ex = true;
		}
 
		public function initConnection(data:Object=null):void {
 
			if (!data) data = ex.call("exportAppData");
 
			if (status.connection) return;
 
			status.connection = true;
 
			version = data.api;
 
			GlobalData.log.add("API detect:"+version);
			//GlobalData.log.add(data);
 
			var flashVars = new Object();
 
			switch (data.api) {
				case "fs": {
 
					me.user_id =  data.userId;
 
					flashVars['apiUrl'] = data.apiUrl;
					flashVars['apiId'] = data.apiId;
					//flashVars['method'] = data.viewer_id;
					//flashVars['sig'] = data.sid;
 
					multi = new FSConnection(me.user_id, flashVars);
					multi.ex = ex;
 
					GlobalData.core.run('SET_UID');
					break;
				}
				case "vk": {
 
					api2.api_id 	=  data.api_id;
					api2.api_url = data.api_url;
					api2.auth_key = data.auth_key;
					api2.access_token = data.access_token;
					api2.secret = data.secret;
 
					app.install = data.is_app_user;
					app.setting = data.api_settings;
					app.lc_name = data.lc_name;
					app.session_id = data.sid; 
 
					me.api = "vk";
					me.user_id= data.viewer_id;
					me.view_id = data.user_id;
 
					flashVars['api_id'] = data.api_id;
					flashVars['viewer_id'] = data.viewer_id;
					flashVars['sid'] = data.sid;
					flashVars['secret'] = data.secret;
 
					multi = new VKConnection(flashVars);
 
					GlobalData.core.run('SET_UID');
 
					break;
				} default: {
					GlobalData.core.run('API_UNDEFINED');
					return;
				}
			}		
		}
 
		public function getMyUser():void {
 
			GlobalData.log.add("getMyUser");
 
			var method = ApiConvertor.usersget(version);
 
			var params = new Object();
				params[ApiConvertor.uids(version)] = me.user_id;
				params[ApiConvertor.fields(version)] = ApiConvertor.fieldsParamsUser(version); 			
 
			multi.api(method, params , fetchUserInfo, onApiRequestFail);
		}
 
		public function join(event:String, callBack:Function):void {
			(ex.join(ApiConvertor.event(version,event),callBack)) ? GlobalData.log.add('Join '+event) : GlobalData.log.add('Join '+event+' already');
		}
 
		public function post(user_id:String,options:Object,callBackOk:Function=null,callBackFail=null):void {
 
			GlobalData.log.add('posting for user > '+user_id);
			GlobalData.log.add(options);
 
			if (!callBackFail) callBackFail = onApiRequestFail;
 
			multi.api("photos.getWallUploadServer", {"uid":user_id}, function(data:Object):void { GlobalData.log.add(data); GlobalData.poster.images(data,user_id,options,callBackOk,callBackFail) } , callBackFail);
		}
 
		public function method($method:String, $data:Object=null):void {
 
			var method:String = ApiConvertor.method(version,$method);
 
			GlobalData.log.add('UnitedMethod: '+$method+' API: '+method);
 
			var send:Object = new Object();
				send.method = method;
 
			if ($data) send.data = $data;
 
			ex.call('method', send);
		}
 
		private function createPendingEvent(event:String,data:Object=null):void {
			GlobalData.log.add("Event "+event);
			dispatchEvent(new Event(event));
		}
 
		public function test():String {
			return "Test call";
		}
 
		private function fetchUserInfo(data: Object): void {
 
			GlobalData.log.add("<b>*** fetchUserInfo ***</b>");
 
			var SocialData = ApiConvertor.parsUserData(version,data);			
 
			if (SocialData) {
				GlobalData.log.add(SocialData);
 
				GlobalData.core.run('SOCIAL_USERDATA', SocialData);
				GlobalData.core.run('SOCIAL_AUTH');
			} else {
				GlobalData.log.add("Error "+data);
				GlobalData.log.add(data);
			}
		}
		private function onApiRequestFail(data: Object): void {
 
			GlobalData.log.add("Error: "+data.error_msg);
		}
		private function wallPostSuccess(data: Object): void {
			GlobalData.log.add("Success wall.post post_id: "+data.post_id.toString());
		}
		private function wallPostFail(data: Object): void {
			GlobalData.log.add("Fail wall.post error_msg: "+data.error_msg);
		}
 
	}
 
}
Internal
Код AS3:
ADDED_TO_STAGE
 
wrapper = Object(parent.parent);
 
// функция из класса UnitedAPI
wrapper.external.getMyUser();
__________________
return this...


Последний раз редактировалось AlexCooper; 30.05.2013 в 23:43.
Старый 30.05.2013, 23:47
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 15  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Спасибо, я не пишу в кадрах, не мой код. Я только начинаю еще свой путь))) Огромное спасибо за исходники, сейчас буду разбираться!

Старый 31.05.2013, 00:07
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 16  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Idon'tKnow Посмотреть сообщение
Спасибо, я не пишу в кадрах, не мой код. Я только начинаю еще свой путь))) Огромное спасибо за исходники, сейчас буду разбираться!
но вообще так как я пишу не пишите) Гуру скажут что я учу плохому)
__________________
return this...

Старый 31.05.2013, 12:58
digdig вне форума Посмотреть профиль Отправить личное сообщение для digdig Найти все сообщения от digdig
  № 17  
Ответить с цитированием
digdig

Регистрация: Jan 2002
Сообщений: 45
Огромное спасибо! Получилось

Старый 31.05.2013, 13:38
XoJlToH вне форума Посмотреть профиль Отправить личное сообщение для XoJlToH Найти все сообщения от XoJlToH
  № 18  
Ответить с цитированием
XoJlToH
 
Аватар для XoJlToH

Регистрация: Sep 2006
Сообщений: 145
Цитата:
Сообщение от Idon'tKnow Посмотреть сообщение
Код AS3:
function clickLis(e:MouseEvent):void{
	trace("click!");
	trace(1234);
	parent.parent.parent.parent.dispatchEvent(new Event(Event.COMPLETE));
	}
А бабблинг тут работать не будет?

Старый 31.05.2013, 14:54
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 19  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
как вариант: в файле zag.swf прописать код
Код AS3:
btn_vixod.addEventListener(MouseEvent.CLICK, exitClickHandler);
 
function exitClickHandler(event:MouseEvent):void
{
	var rootMc: MovieClip = this.stage.getChildAt(0) as MovieClip;
	rootMc.gotoAndStop(2);
}
__________________
FlashPress.ru | Blog

Старый 31.05.2013, 18:18
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 20  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
XoJlToH, вот что и странно, что
Код AS3:
parent.dispatchEvent(new Event(Event.COMPLETE));
не даёт результата. Может быть, дело в том, что parent - это мувиклип, в котором содержится кнопка. И всплывает событие в пределах этого мувиклипа?

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

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

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


 


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


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