婴儿防盗定位
完成定位软件的升级,页面重新改写,历经了好长的岁月。
显示实时位置
1:加入定位模块代码, 2:启动硬件,显示定位 3:定位模块为什么不能自发的去调用参数的路径,采用什么方式才能达到这样的效果 1.解决方案,在新项目中插入原项目的页面,可以不 4:新项目能通过RemotingServiceUtil 查看服务器是否在线,不能通过LocatingServiceUtil查看服务器是否在线 5:让新项目中flash 能发起 http://192.168.2.150/Flash/xml/Map.ashx?id=29 http://localhost:4337/Loc/Flash/Map?id=29 返回 <?xml version="1.0" standalone="yes" ?> <map> <id>29</id> <mapName>WPDEMO</mapName> <facilityId>29</facilityId> <eastWest>8</eastWest> <southNorth>5</southNorth> <mapFile>/Objects/MapFile.ashx?id=29</mapFile> <mapAreaFile>/Flash/xml/MapArea.ashx?mapId=29</mapAreaFile> <mapAPFile>/Flash/xml/AP.ashx?mapId=29</mapAPFile> <mapRouteFile>/Flash/xml/Route.ashx?mapId=29</mapRouteFile> </map> 6:新项目flash能调用tagcoordinate 7:新项目中点击实时监控
人员管理
1:所有人员点击查询在线,显示在线的 view_HostPositionStatusView 视图中那个字段表示在线,IsDisappeared
定位器状态分页
1:数据 2:解决 获取ap最新状态的三条数据 1:看原项目 IServiceApi serviceApi = LocatingServiceUtil.Instance<IServiceApi>(); APStatusView[] apStatus = serviceApi.SelectAPStatusList( null, null, _activatedSorter.SortKey, _activatedSorter.SortDirection, p.PageSize, p.RecordOffset, out totalCount ); 3:/Date(1487832070044)/ 转化时间
定位器记录
定位记录 using (AppDataContext db = new AppDataContext()) { IList<APLocatorLogView> query = db.APLocatorLogViews .OrderByDescending(x => x.WriteTime) .Select(x => new APLocatorLogView { APName = x.APName, APMac = x.APMac, APLocatorStatus = x.APLocatorStatus, CoordinatesName = x.CoordinatesName, MapId = x.MapId, FacilityName = x.FacilityName, WriteTime = x.WriteTime }).ToList(); 1:datatable怎么mData能获取两个数据源,从而拼在一个方块中 定位设置 using (AppDataContext db = new AppDataContext()) { var query = db.DBViewTagSettings .Where(x => HostTag.All .Where(u => u.TagId != 0) .Select(u => u.TagId).ToArray() .Contains((int)x.Id));//x.TagId)); switch (stateFilter.SelectedIndex) { recordsFiltered 和 recordsTotal js中文乱码charset="gbk" js整除 使用者备注, HostTagGroupStatus tagUser = HostTagGroupStatus.SelectByTagId((int)setting.Id);//.TagId); 使用者类型 BusTagUserType.GetTagUserTypeName(tagUser.HostGroupId); 快捷操作 点击类的按钮 1:选择按钮的图标 2:js 点击a 标签怎么触发方法 点击, 执行停止 成功 状态停止 根据状态发生变化,按钮变化
停止/启动某个标签的定位
TagLocateSetting.StopLocating(tagIdArray); // Send a command to LocatingService. LocatingServiceUtil.Instance<IServiceApi>().StartStopLocating();
IList<string> selectedChannels = new List<string>(); foreach (ListItem item in scanChannels.Items) { if (item.Selected) { selectedChannels.Add(item.Value); } } XDocument xDoc = XDocument.Load(Server.MapPath(PathUtil.ResolveUrl("Settings/LocateParameters.xml"))); XElement root = xDoc.Element("Parameters"); int surveyGroupId = int.Parse(root.Element("SurveyGroup").Value); using (AppDataContext db = new AppDataContext()) { SurveyGroup surveryGroupValue = db.SurveyGroups.FirstOrDefault(); if (surveryGroupValue != null) { surveyGroupId = surveryGroupValue.Id; } } TagLocateSetting useSettingModel = new TagLocateSetting { LocatingMode = byte.Parse(root.Element("LocatingMode").Value), RssiBackCount = int.Parse(root.Element("RssiBackCount").Value), ScanInterval = int.Parse(root.Element("ScanInterval").Value), ScanMode = byte.Parse(root.Element("ScanMode").Value), ScanSsid = root.Element("ScanSsid").Value, ScanChannels = root.Element("ScanChannels").Value, ScanTarget = byte.Parse(root.Element("ScanTarget").Value), SurveyGroupId = surveyGroupId, UpdateTime = DateTime.Now, CommandState = (byte)LocatingCommandState.WaitToStart }; //TagLocateSetting useSettingModel = new TagLocateSetting { // LocatingMode = byte.Parse(locatingMode.SelectedValue), // RssiBackCount = int.Parse(rssiBackCount.SelectedValue), // ScanInterval = int.Parse(scanInterval.SelectedValue), // ScanMode = 2, // ScanSsid = scanSsid.Text.Trim(), // ScanChannels = string.Join(",", selectedChannels.ToArray()), // ScanTarget = byte.Parse(scanTarget.SelectedValue), // SurveyGroupId = int.Parse(surveyGroup.SelectedValue), // UpdateTime = DateTime.Now, // CommandState = (byte)LocatingCommandState.WaitToStart //}; if (Config.Settings.ProjectType == ProjectTypeEnum.WXFactory) { useSettingModel.ScanMode = 1; TagSetting useSetting = new TagSetting { ScanMarkEnable=true, ScanMarkDetectInterval=Convert.ToInt32(this.detectInterval.Text.Trim()), ScanMarkScanTime=Convert.ToInt32(this.scanTime.Text.Trim()), ScanMarkScanInterval=Convert.ToInt32(this.wscanInterval.Text.Trim()), ScanMarkScanCount=Convert.ToInt32(this.scanCount.Text.Trim()), ScanMarkGoodSignal=Convert.ToInt32(this.goodSignal.Text.Trim()), ScanMarkLocatingInterval=Convert.ToInt32(this.locatingInterval.Text.Trim()) }; foreach (var id in tagIdArray) { if (id > 0) { using (AppDataContext db = new AppDataContext()) { var dbTagSet = db.TagSettings.SingleOrDefault(t => t.TagId == id); if (dbTagSet!=null) { dbTagSet.ScanMarkEnable = true; dbTagSet.ScanMarkDetectInterval = useSetting.ScanMarkDetectInterval; dbTagSet.ScanMarkScanTime = useSetting.ScanMarkScanTime; dbTagSet.ScanMarkScanInterval=useSetting.ScanMarkScanInterval; dbTagSet.ScanMarkScanCount = useSetting.ScanMarkScanCount; dbTagSet.ScanMarkGoodSignal = useSetting.ScanMarkGoodSignal; dbTagSet.ScanMarkLocatingInterval = useSetting.ScanMarkLocatingInterval; db.SubmitChanges(); } //else if (dbTagSet.ScanMarkDetectInterval != 0 && dbTagSet.ScanMarkGoodSignal != 0) //{ // this.detectInterval.Text = dbTagSet.ScanMarkDetectInterval.ToString(); // this.scanTime.Text = dbTagSet.ScanMarkScanTime.ToString(); // this.wscanInterval.Text = dbTagSet.ScanMarkScanInterval.ToString(); // this.scanCount.Text = dbTagSet.ScanMarkScanCount.ToString(); // this.goodSignal.Text = dbTagSet.ScanMarkGoodSignal.ToString(); // this.locatingInterval.Text = dbTagSet.ScanMarkLocatingInterval.ToString(); //} } } } } TagLocateSetting.StartLocating(tagIdArray, useSettingModel); // Send a command to LocatingService. LocatingServiceUtil.Instance<IServiceApi>().StartStopLocating();
TagGroup
IList<HostGroupInfo> lGroup = HostGroupInfo.All; List<HostCountByGroup> lGroupCount = new List<HostCountByGroup>(); if (lGroup != null) { IList<HostTagGroupStatus> allHosts = HostTagGroupStatus.All; foreach (HostGroupInfo info in lGroup) { //GTang2010/01/27 if (Config.Settings.ProjectType == ProjectTypeEnum.NMPrison) { if (info.HostGroupId == (int)HostGroupTypeEnum.Phenomenon || info.HostGroupId == (int)HostGroupTypeEnum.Location) { continue; } } else if (Config.Settings.ProjectType == ProjectTypeEnum.YZPrison) { if (info.HostGroupId == (int)HostGroupTypeEnum.Location) { continue; } } //------------- HostCountByGroup hostCount = new HostCountByGroup(); hostCount.Id = info.HostGroupId; hostCount.GroupName = info.HostGroupName; hostCount.GroupDescription = info.Description; hostCount.TagCount = allHosts.Where(x => x.HostGroupId == info.HostGroupId).Count(); ; lGroupCount.Add(hostCount); } groupList.DataSource = lGroupCount; groupList.DataBind(); } HostCountByGroup internal int Id; internal string GroupName; internal int TagCount; internal string GroupDescription;
设置告警条件
1:点击编辑,显示标签列表。 2:已选标签栏中需要显示已经绑定的标签 3:如何在cshtml中jscript中循环viewData 发布问题,修改设计方向 <script> var data = []; @foreach (var e in (ViewData["demos"] as List<Tag>)) { <text> data.push({ id: "@e.Id", name: "@e.TagName" }); </text> } console.log(data); </script> <script> var data = []; data.push({ id: "5847", name: "NewTag_00:0A" }); data.push({ id: "5848", name: "NewTag_00:0D" }); data.push({ id: "5849", name: "0021" }); console.log(data); </script> 4:在html中 @foreach (var color in ViewData["tags"] as List<Tag>) { @color.Id } 5:修改方向,单用点击编辑的时候,传入用户的id,在弹出口中,用ajax初始化,来初始化 标签列表和已选中标签的栏,当用户点击弹出框的确认按钮的时候,设置form表单中隐藏tags输入栏的值。 6:修改方向,用户的绑定tags都存在隐藏的文件中,没有tagName,那就在后端重新ViewData存放viewData 中的List json之后存放在tags隐藏的输入框中,后面取的时候转换下Parse, tr怎么隐藏 7:初始化 弹出框中的已选中标签 js中怎么判断array中是否已经存在object属性 http://www.cnblogs.com/wuhuacong/p/3667703.html tags输入框的使用 8:jquery 移除属性checked jquery table 点击确认选中按钮后,怎么清除勾选。 9:对区域设置告警条件,添加使用者 1:区域存放 {id,name}到输入框中 *1:看原项目中怎么获取maparea和他绑定的警告条件和人员 int deleteRuleId = Fetch.QueryUrlAsIntegerOrDefault("deleteRuleId", -1); if (deleteRuleId != -1) { if (!LocatingServiceUtil.IsAvailable()) { AreaWarningRule.Delete(deleteRuleId); AreaWarningRuleCoverage.DeleteByRuleId(deleteRuleId); } else { IServiceApi serviceApi = LocatingServiceUtil.Instance<IServiceApi>(); serviceApi.DeleteWarningRule(deleteRuleId); serviceApi.DeleteWarningRuleCoverage(deleteRuleId); } Terminator.Redirect(Fetch.Referrer); } MapArea area = MapArea.Select(_id); areaName.Text = area.AreaName; facilityName.Text = Facility.GetNameByMapId(area.MapId); IList<AreaWarningRule> _p = AreaWarningRule.SelectRuleByAreaId(area.Id); IList<AreaWarningRuleCoverage> _c = AreaWarningRuleCoverage.GetAreaWarningRuleCoverages(); _list = (from _p1 in _p join _c1 in _c on _p1.Id equals _c1.RuleId join _h1 in HostTag.All on _c1.TagId equals _h1.TagId select new _temp { RuleId = _c1.RuleId, TagId = _c1.TagId, HostName = _h1.HostName }).ToList(); ruleList.DataSource = _p; ruleList.DataBind();
- 删除告警条件
1.设置界面已设置告警条件的显示 1:2列,每列一行。 jstree 怎么获取选中节点 2:jstree怎么给节点赋id childrenJson.push({ text: chooseList[j].Name, icon: (chooseList[j].Type == 0 ? "fa fa-sign-in" : "fa fa-sign-out"), id: chooseList[j].Id }); var ids = $('#tree').jstree('get_selected'); var ids = $('#tree').jstree('get_selected',true); 重新考虑,删除只对ruleId删除,一个ruleId,可以对多标签 根据获得的删除的ids,来查找rulesId的集合,来删除rule. String[] d= (from _p1 in _p join _c1 in _c on _p1.Id equals _c1.RuleId join _h1 in _h on _c1.TagId equals _h1.TagId where (_h1.HostId in idArray) select _c1.RuleId ).ToArray(); 4:删除警告条件 jstree 清除 $('#jstree2').data('jstree', false).empty() $('#jstree2').data('jstree', false).empty();我调用了这个方法后,直接变成loading了 for jstree3 . I use destroy() function and again create tree running jstree() function 在新的系统中规定,一个标签就是一条规则,该标签对于此区域只有一种可能,要么出去报警,要么进入报警
- 新增报警
1.不显示已绑定的标签。 2.点击确认之后,比较原有标签List,是否含有新增的标签,有的话,进行删除规则 再将新的标签list进行添加规则 3 查询所有规则 进行tree的重现渲染。 4.原项目怎么添加警告条件 AreaWarningRule rule = new AreaWarningRule(); rule.EnableToAllTags = forAllTags.SelectedValue == "1"; rule.AreaEventType = byte.Parse(areaEventType.SelectedValue); rule.AreaId = _id; rule.IsDisabled = false; int[] tagidarray = new int[tagSelector.SelectedUserIds.Count()]; ArrayList alHostId = new ArrayList(); int[] hostIdArray = null; sTagID = ""; for (int i = 0; i < tagSelector.SelectedUserIds.Count(); i++) { //根据hostid取得tagid HostTag ht = new HostTag(); ht = HostTag.GetById(tagSelector.SelectedUserIds[i]); if (ht != null) { alHostId.Add(ht.HostId); sTagID += ht.TagId + ","; tagidarray[i] = ht.TagId; } } hostIdArray = (int[])alHostId.ToArray(typeof(int)); AreaWarningRule.sTagID = sTagID; if (!LocatingServiceUtil.IsAvailable()) { AreaWarningRule.InsertAndReturnId(rule); if (rule.EnableToAllTags == false) { //AreaWarningRuleCoverage.SetCoverage(rule.Id, hostIdArray); AreaWarningRuleCoverage.SetCoverage(rule.Id, tagidarray); //AreaWarningRuleCoverage.SetCoverage(rule.Id, tagSelector.SelectedTagIdArray); } } else { IServiceApi serviceApi = LocatingServiceUtil.Instance<IServiceApi>(); EditResult result = serviceApi.InsertWarningRule(rule); rule.Id = result.Id; if (rule.EnableToAllTags == false) { serviceApi.SetWarningRuleCoverage(rule.Id, tagidarray); //serviceApi.SetWarningRuleCoverage(rule.Id, tagSelector.SelectedTagIdArray); } } Array.ConvertAll<string, int>(idArray, s => int.Parse(s)); 1:右侧添加一个框 2:组和对象的删除关联 3:组和对象的增加关联 _id = HostGroupInfo.AddHostGroupInfo(0, groupName.Text.Trim(), Strings.Left(groupDescription.Text.Trim(), 200), Convert.ToInt32(this.grouplist.SelectedValue)); HostTag.RemoveHostGroupByGroupId(_id); HostGroupInfo.UpdateHostGroupInfo(_id, groupName.Text.Trim(), Strings.Left(groupDescription.Text.Trim(), 200), Convert.ToInt32(this.grouplist.SelectedValue)); HostTag.RemoveHostGroupByGroupId(_id); if (tagSelector.SelectedUserIds != null) { AddHostTagGroup(tagSelector.SelectedUserIds, _id); } private void AddHostTagGroup(int[] TagIdArray, int groupId) { int MapId = 0; List<int> lHostIds = new List<int>(); for (int i = 0; i < TagIdArray.Length; i++) { HostTag host = HostTag.GetById(TagIdArray[i]); if (host != null && host.HostId > 0) { HostTag.SetHostGroup(host.HostId, groupId); } else { host = new HostTag(); Tag tag = Tag.Select(TagIdArray[i]); if (tag != null) { host.HostExternalId = tag.SerialNo; //TagHost tagHost = Tag.SelectTagHost(TagIdArray[i]); host.HostName = groupName.Text.Trim() + "_" + ((tag.TagMac.Length > 9) ? tag.TagMac.Substring(9) : tag.TagMac); host.Description = tag.TagName; host.ImagePath = ""; host.HostType = 0; host.TagId = TagIdArray[i]; host.HostId = HostTag.AddOrUpdateHostTag(0, host.TagId, host.HostExternalId, host.HostName, host.HostType, host.Description, host.ImagePath); HostTag.SetHostGroup(host.HostId, groupId); if (i == 0) { TagStatusView tagView1 = TagStatusView.SelectTagStatusByHostId(host.HostId); MapId = tagView1.MapId; } } } lHostIds.Add(host.HostId); } int[] hostIds = lHostIds.ToArray(); if (LocatingServiceUtil.IsAvailable()) { //内蒙不需要这样删除 try { int[] delhostIds; GetDelIDs(out delhostIds, groupId, MapId, hostIds); if (delhostIds.Count() > 1) { //合并两个数组,传值,以-1为分界值 int[] myhostIds = new int[delhostIds.Length + hostIds.Length]; delhostIds.CopyTo(myhostIds, 0); hostIds.CopyTo(myhostIds, delhostIds.Length); LocatingServiceUtil.Instance<IServiceApi>().UpdateHostGroup(myhostIds, groupId); } else { LocatingServiceUtil.Instance<IServiceApi>().UpdateHostGroup(hostIds, groupId); } } catch (Exception err) { } } } /// <summary> /// 取出需要删除掉的hostid /// </summary> /// <param name="delhostIds"></param> /// <param name="groupid"></param> /// <param name="MapId"></param> /// <param name="hostIds"></param> /// private void GetDelIDs(out int[] delhostIds, int groupid, int MapId, int[] hostIds) { LocatingServiceUtil.DemandLocatingService(); IServiceApi serviceApi = LocatingServiceUtil.Instance<IServiceApi>(); List<int> ihostid = new List<int>(); bool bExist = false; int itotalcount = 0; int imapid = MapId; int[] FindHostIDByGroup = new int[] { groupid }; TagStatusView[] tgv = serviceApi.SelectTagStatusListByKeywords( "", FindHostIDByGroup, MapId, false, false, false, false, false, false, "TagName", SortDirection.Ascending, 50, 0, out itotalcount ); for (int k = 0; k < tgv.Count(); k++) { for (int m = 0; m < hostIds.Count(); m++) { if (tgv[k].HostTag.HostId == hostIds[m]) { bExist = true; break; } } if (bExist) { bExist = false; continue; } else { ihostid.Add(tgv[k].HostTag.HostId); } } if (ihostid.Count() > 0) { ihostid.Add(-1); } delhostIds = ihostid.ToArray(); }
登录,日志大概设计
var permissions = AdminUserContext.Current.LoginInfo.BusinessPermissionList.Select(p => p.ToString()); 需要登录的controller,继承 AdminControlerBase OnActionExecuting action执行前。 1。如果注释了AuthorizeIgnoreAttribute 就不需要登录直接进行跳转 2.LoginInfo 获取用户登录信息,如果不存在就跳转 3.执行action 怎么获取用户的权限配置 AdminMenuConfig 和 CachedConfigContext 1.创建userController的列表显示页面 2.保存表单 ,都采用ajax Strings.MD5(password.Text.Trim()) //user 是怎么进行编辑,保存的 Data.User.Insert(user); //记录日志 Diary.Insert(me.Id, 0, 0, "新增系统用户: " + user.UserName); Data.User.UpdateById(_userId, user.Password, user.Role); //记录日志 Diary.Insert(me.Id, 0, 0, "修改系统用户" + user.UserName + "的信息。") input type="radio" name="Role" 怎么取值 c# mvc 怎么设置 radio 选中 回显
数据管理
backupdays.Text = "30"; readonlyMark.Text = "<font color='red'>(从现在起几天前的数据进行备份)</font>"; var backupInfor = BackupLogConfig.All; if (backupInfor == null || backupInfor.Count == 0) { feedbacks.Items.AddError("备份配置表未设置!"); return; } else { foreach (var name in backupInfor) { if (name.FieldType == "backuppath") { lblBackupPath.Text = name.FieldValue; } else { lblBackupTableList.Text += name.FieldValue + "(" + name.Description + ")" + "<br>"; } } } } test.dbo.history_TagPositionLog D:\DB_History\ WriteTime using System.Data.SqlClient; //备份 int Days = int.Parse(backupdays.Text); //最近几天前的进行备份 string FPath = lblBackupPath.Text.Trim(); //导出数据所在文件路径 int ITest = 0; //为0时为测试,即只创建文件,不删除原始数据 ITest = int.Parse(Rdolist.SelectedValue); string sProcName = "pNetRadio_historyDataExport"; try { var backupInfor = BackupLogConfig.All; foreach (var name in backupInfor) { if (name.FieldType == "backuptable" && name.DateFieldName != "") { using (AppDataContext db = new AppDataContext()) { SqlCommand myCommand; SqlConnection myConnection = (SqlConnection)db.Connection; myCommand = new SqlCommand(sProcName, myConnection); myCommand.CommandType = CommandType.StoredProcedure; myCommand.CommandTimeout = 600; myCommand.Parameters.AddWithValue("@Days", Days); myCommand.Parameters.AddWithValue("@TblName", name.FieldValue); //表名 myCommand.Parameters.AddWithValue("@FieldName", name.DateFieldName); //表对应的时间字段 myCommand.Parameters.AddWithValue("@FPath", FPath); myCommand.Parameters.AddWithValue("@iTest ", ITest); myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); } } } ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", @" var l=window.onload; window.onload=function() { if(l!=null) {l();} window.setTimeout('window.alert(\'备份完成!\');',2) window.onload=l; } " , true); }
多地图
function initMap() { var div = document.getElementById("flashContainer"); var obj = new Object(); obj.width = div.clientWidth; //宽度 obj.height = div.clientHeight; //高度 obj.maplistxml = "../Flash/xml/MapList.ashx"; //地图列表XML obj.mapxml = "../Flash/xml/Map.ashx?id=<%# FacilityMapId%>"; //地图XML obj.tagxml = "../Flash/xml/TagCoordinates.ashx?mapId=<%# FacilityMapId%>"; //标签XML obj.cameraxml = "../Flash/xml/camera.ashx?mapId=<%# FacilityMapId%>"; //摄像头url obj.hostgroupxml = "../Flash/xml/HostGroup.ashx"; obj.latesteventsxml = "../Flash/xml/LatestEvents.ashx"; obj.jumpurl = "?facilityId=@fid&mapId=@mid"; //下拉列表选择时跳转到的网址,@开头的字符串将会被替换为列表值 obj.searchurl = "?keyword=@keyword&eventtypes=@eventtypes&pagesize=@pagesize¤tpage=@currentpage&taggroups=@taggroups&tagid=@tagid"; //标签搜索网址,@开头的字符串将会被替换为列表值 obj.refersh = 2000; //刷新时间(毫秒),标签XML数据的间隔时间 obj.delay = 500; //现实中的1000毫秒相当于地图上的数值,500表示移动速度为现实的2倍 obj.speed = 4; return obj; }
webservice api的变化
http://192.168.2.150/Flash/xml/TagCoordinates.ashx?mapId=29&keyword=&eventtypes=&pagesize=5¤tpage=1&taggroups=&tagid=null&time=1487227073662 0 <?xml version="1.0" standalone="yes" ?> - <tagCoordinates> - <pagination> <recordCount>1</recordCount> <pageSize>5</pageSize> <currentPage>1</currentPage> </pagination> - <coordinates id="32" mapId="29" mapName="WPDEMO" coordinatesName="A" x="1.07" y="1.22"> <tag id="5849" tagName="0021" warningTypes="" warningLevel="1" moveSpeed="2" icon="/Images/police.gif" updateTime="2017/2/20 9:52:37" groupIds="1" /> </coordinates> </tagCoordinates> 1 <?xml version="1.0" standalone="yes" ?> - <tagCoordinates> - <pagination> <recordCount>1</recordCount> <pageSize>5</pageSize> <currentPage>1</currentPage> </pagination> - <coordinates id="33" mapId="29" mapName="WPDEMO" coordinatesName="B" x="1.12" y="3.6"> <tag id="5849" tagName="0021" warningTypes="" warningLevel="1" moveSpeed="2" icon="/Images/police.gif" updateTime="2017/2/20 9:46:47" groupIds="1" /> </coordinates> </tagCoordinates> 2 <?xml version="1.0" standalone="yes" ?> - <tagCoordinates> - <pagination> <recordCount>1</recordCount> <pageSize>5</pageSize> <currentPage>1</currentPage> </pagination> - <coordinates id="35" mapId="29" mapName="WPDEMO" coordinatesName="D" x="6.73" y="1.25"> <tag id="5849" tagName="0021" warningTypes="" warningLevel="1" moveSpeed="2" icon="/Images/police.gif" updateTime="2017/2/20 9:45:02" groupIds="1" /> </coordinates> </tagCoordinates>
actionscript 添加动画
1:actionScript移动图标, 1:简单的点击事件,实现了点击,输出消息。 2:实现点击事件,实现按钮位置的改变 2:获取实时位置 http://bbs.9ria.com/thread-24082-1-1.html 时间为参数,获取对应时间的对应位置 3:actionScript添加显示对象 4:actionScript对象移动 http://wenku.baidu.com/link?url=9epBGMTAkD4YXM75kWUJFGgWdvpiI2KJHDhG_zmQqtCz4hb-svV__7OEKLTZ0gUnQfWxI9dSIHYldDhGVShx9lEZW1lbpgw0hyz1q1jVQJ7 1.actionScript能创建movieClip的对象吗? 2:看下项目的swf 0:方法 http://blog.csdn.net/dj0379/article/details/8072909 1: actionScriptViewer http://download.csdn.net/detail/u010629930/5348217
flash actionscript
ctrl+g 可以组合 ctrl+k 排列分布 ctrl+b 打散 alt 复制 按住alt键进行大小的调整 空格键 放大镜使用 关键帧 空白关键帧 帧 空白帧 动作动画 stage3D 动画设计制作入门与提高 2.1.矢量绘图的基础 绘制夜景 4.3 对象的合并和分离 4.8图层 5.3 动态文字按钮 5.7.1认识库 6.6.1 飞舞的蝴蝶 9.1 关于actionscript 9.4 用按钮控制电影的播放 10.5.3 制作滚动的文本框 11.4 用户界面组件 13.2 花开的效果 14 圣诞贺卡 10.3.3 动态路径 如何绘制光滑的曲线 引导线 滤镜什么作用