信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2243|回复: 9
打印 上一主题 下一主题

[『C++图文教程』] 有了这个C++状态管理再也不用多语言去转换或是装插件去搞了

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-6-14 21:43:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:C++ 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件中级教程 

软件教程发布日期:2017-06-14

软件教程关键字:有了这个C++状态管理再也不用多语言去转换或是装插件去搞了

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述

多年前看的一个demo使我第一次完全明白了游戏中的不同状态。这个demo能够从一个特效平滑的过渡到另一个特效,并能从2D漩涡效果直接过渡到3D渲染环境,就像是几个不同的程序写成的。


多状态不仅在demo中重要,在游戏中也同样重要。每个游戏程序基本上都是从介绍开始,显示菜单,然后进行游戏。当被击败时,游戏就结束了(通常返回到菜单界面)。大多数游戏中,很可能会同时出现多个状态——比如游戏过程中弹出菜单。




传统的处理多状态的方式是使用一大堆的ifswitch loop语句。程序从介绍状态开始一直循环,直到按下一个键;然后菜单就显示了,直到完成了选择操作;游戏开始了,就一直循环,直到游戏结束。每一次游戏循环,程序还得检查是应该显示菜单还是简单的绘制下一帧。而且,处理事件的那部分程序还必须判断输入究竟是菜单来相应还是游戏来相应。所有的这些组合起来就形成了一个主循环,可以发现这个大杂烩很难理解,并且调试和维护起来也不方便。




状态是什么呢?(What’s a state?)




游戏状态就像是游戏的一个单独的程序。每个状态需要以不同的方式处理事件,需要在屏幕上绘制不同的内容。每个状态还需要处理它自己的事件、更新游戏场景、绘制下一帧等等。因此,我们可以确定状态应该至少拥有三个方法。




状态又应该能够加载图形、自初始化、释放资源。并且有时状态还需要暂停,还要能够恢复。




到此为止,状态类就应该看起来如下所示:



class CGameState{public:  void Init();  void Cleanup();
  void Pause();  void Resume();
  void HandleEvents();  void Update();  void Draw();};


上面的状态类设计应该能够满足游戏的状态需求。把它当作基类,从它可以派生出游戏所需要的每一种状态——介绍状态(intro state)、菜单状态(menu state)、游戏状态(play state)等等。




状态管理器(The State Manager





接下来,我们需要一个管理状态的方法——状态管理器。状态管理器是游戏引擎本身的一部分。别人可能会选择创建一个单独的状态管理类,而我只是把它直接加到引擎中。我们先来看看一个游戏引擎能做什么,然后再设计一个类来完成这些功能。




我们的这个例子很简单,整个引擎需要做到是初始化SDL和完成后的清理工作。由于在主循环需要用到这个引擎,因此需要检查引擎是否仍然在运行、是否退出,以及处理事件、更新游戏、绘制帧序列。




状态管理器实际上很简单。我们用 “状态栈”来管理各种不同的游戏状态。在此用STL的vector来实现状态栈。除此之外,还需要改变状态的方法,以及入栈和出栈方法。




至此,游戏引擎类就如下所示:



class CGameEngine{public:
  void Init();  void Cleanup();
  void ChangeState(CGameState* state);  void PushState(CGameState* state);  void PopState();
  void HandleEvents();  void Update();  void Draw();
  bool Running() { return m_running; }  void Quit() { m_running = false; }
private:  // the stack of states  vector<CGameState*> states;
  bool m_running;};


这些成员函数中有几个非常简单的——HandleEvents(), Update() 和Draw()。它们只需简单的调用栈顶状态对象相应的成员函数即可。由于需要经常访问游戏引擎中的数据,因此需要在以上三个成员函数中加一个指向引擎指针的参数。




最后需要考虑的是状态之间的切换。引擎如何知道状态何时切换到另一个状态?答案是:它不知道。只有当前的状态知道什么时候转向下一个状态。于是,我们又需要为状态类加一个改变状态的成员函数。




对于状态类时,我们把它设计为一个抽象基类——它的大部分成员函数设计为纯虚函数。这就保证了它的子类都必须得实现这些方法。经过这些更改后,最后的游戏状态类如下所示:



class CGameState{public:  virtual void Init() = 0;  virtual void Cleanup() = 0;
  virtual void Pause() = 0;  virtual void Resume() = 0;
  virtual void HandleEvents(CGameEngine* game) = 0;  virtual void Update(CGameEngine* game) = 0;  virtual void Draw(CGameEngine* game) = 0;
  void ChangeState(CGameEngine* game,                    CGameState* state) {    game->ChangeState(state);  }
protected:  CGameState() { }};


现在要为游戏增加状态就非常简单了,只需从基类继承一个子类,实现那几个纯虚函数就可以了。对于某种状态,在游戏中只需一个实例,因此把它们设计成Singleton模式是个不错的选择。




这种方法究竟能够把游戏简化到什么程度,如下所示的main.cpp中包含的所有代码可以说明:



int main ( int argc, char *argv[] ){  CGameEngine game;
  // initialize the engine  game.Init( "Engine Test v1.0" );
  // load the intro  game.ChangeState( CIntroState::Instance() );
  // main loop  while ( game.Running() )  {    game.HandleEvents();    game.Update();    game.Draw();  }
  // cleanup the engine  game.Cleanup();
  return 0;}


下载(Downloads




这个例子里包含了三个不同的状态——introduction state,playing state,pauses state。每种状态都用一幅背景图片来表示。



·              stateman.zip - Tutorial Source, Graphics, and Project files for Visual C++ 6.


·              stateman.tar.gz - Tutorial Source, Graphics, and Makefile for Linux.


这个例子的代码用的是SDL。如果你不熟悉,可以看一下这篇文章:Getting Started with SDL。


任务组取消

  新的Beta1 PPL的其中一个功能就是可以取消正在运行中的任务组。在task_group类型上加入run 和 wait方法是一个新的cancel方法。还有一个相应的is_canceling方法让你可以检查在进程中是否完成取消。task_group_status列举也有一个新的值叫做canceled,让你检查取消是否发生。以下的代码展示了这些新的功能:

  //declare tasks and run tasks

  task_group tg;

  tg.run(([]{printf("consoleWrite0\n");}));

  tg.run(([]{printf("consoleWrite1\n");}));

  //cancel tasks   tg.cancel();

  //check whether tasks are being cancelled

  bool taskGroupIsCanceling = tg.is_canceling();

  //check on status of task group

  task_group_status status = tg.wait();

  if (status == completed){

  printf("Tasks were completed successfully\n");

  }

  else if (status == canceled){

  printf("Tasks were canceled during task execution\n");

  }

  else{

  printf("An exception occured during task execution\n");

  }

  Combinable 类型

  达到并行执行编程任务的最大利益的有效形式之一是工作在本地拷贝或是子数据上的每一个并行分支被处理,然后当处理结束后,将结果合并。这个形式可以最大限度的减少资源争用,而且减少潜在的死锁和当并行线程试图更新相同的内存位置时所发生的数据不一致的问题。

  使用这个形式没有那么复杂,但是需要很乏味的为每一个使用进行手动编码。为了简化形式使用,Visual C++ 2010 Beta 1 添加了combinable模版类型。这个模版参数传递到combinable是每个任务将要操作的对象类型。这个类型必须有一个默认的构造器和一个拷贝构造器。通过使用local方法,每个任务访问它自己的combinable管理资源的拷贝。 当所有任务结束后,通过使用combine 或是 combine_each方法,你可以将所有结果合并到一个结果集中。

  以下的代码用三个独立的任务添加一些元素给一个矢量,然后用两个合并的方法将结果合并成一个矢量。

  //declare a combinable vector of integers

  combinable< vector< int>> v;

  //add an element to the vector using three separate tasks

  parallel_invoke(   [&]{ v.local().push_back(1); },

  [&]{ v.local().push_back(2); },

  [&]{ v.local().push_back(3); }

  );

  //merge the task-local copies using combine_each

  vector< int> result1;

  v.combine_each(

  [&](vector< int>& local)

  {

  result1.insert(result1.end(),

  local.begin(), local.end());

  }

  );

  //merge the task-local copies using combine

  vector< int> result2 = v.combine(

  [](vector< int> left, vector< int> right)->vector< int>{

  left.insert(left.end(), right.begin(), right.end());

  return left;

  });

  要注意的是在最后一行的代码语句中的lambda表达式的明确返回类型声明的使用。在lambda表达式中的两个语句阻止编译器正确推断返回类型,所以需要手动声明。

  也可以为没有默认构造器(或是在很多情况下默认构造器的使用是不合适的)的类型使用combinable,通过使用combinable构造器,它是采用了一个发生器功能创建了一些模版参数类型的对象。上面代码的前面几行是使用超载发生器构造器而重新编写的。在这种情况下,发生器功能返回已经包含一个元素的矢量。

  //declare a combinable vector of integers

  inable< vector< int>> v([]{return vector< int>(1, 0);});

  同步

  Combinable的使用取决于不需要作用在其他任务上的结果的任务。在多重任务的情况下需要分享一个对象,你必须使用更传统的同步策略。PLL本身带有三个同步原语——critical_section, reader_writer_lock 和 event。critical_section锁住内存位置防止没有锁的所有任务的访问。对于内存位置将有很多同时读取者和少数编写者,更优化的reader_writer_lock是可用的,允许多重读取者获取锁并同时访问内存位置。最后的原语是event,用于在任务和线程之间发信号。

  同步原语在concrt.h标题文件(是PPL的基本标题文件,包含在ppl.h中)中被定义。在concrt.h中定义的大多数类型的目标是图书馆作者,而不是应用程序的开发者,但是任何对深层并行开发感兴趣的人都可以自由的调查和使用恰当的来自暴露在外的类型的功能。

  critical_section类型的API是非常简单的;你使用一个blocking lock方法来获取这个锁,non-blocking try_lock会试图去获取这个锁,如果它可用的话,而且unlock会释放一个锁住的critical_section。

  reader_writer_lock是有一点点的复杂。它添加了两个方法,lock_read 和try_lock_read,可以支持获取一个reader lock。Unlock方法和critical_section是一样的,而且将释放恰当的基于锁类型的锁。

  最后的同步原语是event,这是手动复位事件(即:事件保持设置直到用外部代码进行手动复位)。代码可以通过调用实例wait方法(也是支持一个可选的timeout值),等待一个单一事件被设置。当没有timeout被定义的时候,等待的时间是无限的。你可以等待多重事件,通过使用静态wait_for_multiple,它接受C-style的event pointers。wait_for_multiple方法等待一个单一事件或是所有的事件传递到方法调用。以下的代码等待这两个事件被设置:

  event* events[2];

  events[0] = new event();

  events[1] = new event();

  parallel_invoke(

  [&]{ events[0]->set(); },

  [&]{ events[1]->set(); }

  );

  bool waitForAllEvents = true;

  event::wait_for_multiple(events, 2, waitForAllEvents);

  当同时执行很多任务的时候,处理状态管理是非常艰巨的工作。PPL提供对状态管理的一种形式的支持,就是每个线程在本地版本的分享对象上进行操作,在程序结束的时候将这些结果合并起来。对于分离状态管理的情况是不恰当的,PPL以critical_section, reader_writer_lock 和 event的形式提供传统的同步原语。



unto认真学一学C++元素命名的重点难点都在这一目了然了next自动信息发布网商之窗软件
回复

使用道具 举报

0

主题

641

帖子

627

积分

积分
627
信息发布软件沙发
发表于 2017-6-18 12:50:02 | 只看该作者
,制作完美。

回复 支持 反对

使用道具 举报

0

主题

603

帖子

573

积分

积分
573
推广工具板凳
发表于 2017-6-22 19:59:30 | 只看该作者
很好,热情有耐心!

回复 支持 反对

使用道具 举报

0

主题

605

帖子

600

积分

积分
600
软件定制开发地板
发表于 2017-6-22 20:09:09 | 只看该作者
教程很丰富,很有用。支持店主。

回复 支持 反对

使用道具 举报

0

主题

641

帖子

635

积分

积分
635
5#定制软件#
发表于 2017-6-23 04:38:29 | 只看该作者
论坛数据库真厉害,很快就搞定,修复云平台更厉害哦

回复 支持 反对

使用道具 举报

0

主题

593

帖子

603

积分

积分
603
6#定制软件#
发表于 2017-6-28 15:43:36 | 只看该作者
要求比较高的人,在合作的过程中客服一次又一次耐心的和我沟通,这种态度真的很让人感动,希望生意兴隆

回复 支持 反对

使用道具 举报

0

主题

584

帖子

578

积分

积分
578
7#定制软件#
发表于 2017-6-29 13:08:15 | 只看该作者
次了,服务好,活好,技术好,耐心,就是我有毛病,看着自己论坛不好,老买。啪啪啪

回复 支持 反对

使用道具 举报

0

主题

1093

帖子

1105

积分

积分
1105
8#定制软件#
发表于 2017-7-7 01:21:27 | 只看该作者
很好,好评!!

回复 支持 反对

使用道具 举报

0

主题

612

帖子

596

积分

积分
596
9#定制软件#
发表于 2017-7-7 09:24:58 | 只看该作者
常满意

回复 支持 反对

使用道具 举报

0

主题

586

帖子

582

积分

积分
582
10#定制软件#
发表于 2017-7-8 08:56:24 | 只看该作者
店主,速度很快,很满意,正好赶上我得活动,谢谢店主,这次活动赚钱了,再来设计,哈哈

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK苹果IOS线条类[Line]复杂示例
AIWROK苹果IOS线条类[Line]复杂示例
信息发布软件AIWROK软件苹果IOS线条实作简单示例
AIWROK软件苹果IOS线条实作简单示例
信息发布软件AIWROK软件IOS苹果线条类[Line]方法小结
AIWROK软件IOS苹果线条类[Line]方法小结 . 线条宽度设置方法2. 线条高度设置方法3. 线条颜色设置方法实用演示例子:
信息发布软件AIWROK软件苹果IOS吐司toast.show方法小结
AIWROK软件苹果IOS吐司toast.show方法小结 实例呈现:
信息发布软件AIWROK软件苹果IOS系统图色视觉[opencv]方法小结
AIWROK软件苹果IOS系统图色视觉[opencv]方法小结 方法 1:OCR 识别(指定区域)方法 2:获取图像 Base64 编码方法 3:获取 Mat 对象方法 4:Mat 转 Image方法 5:Base64 转 Image方法 6:读取图片文件为 Image方法 7:释放图像资源实战示例子:
信息发布软件AIWROK软件苹果IOS系统图色视觉[opencv]方法小结
AIWROK软件苹果IOS系统图色视觉[opencv]方法小结 方法 1:cv 文件找图(模版匹配 cv 找图)方法 2:cv 文件 OCR(模版匹配 OCR)方法 3:模版匹配(通过模版匹配找到目标对象)方法 4:找多图方法 5:转灰度图(图像转灰度图)方法 6:裁切图片(从大图中截图裁切图片)方法 7:二值化方法 8:颜色翻转实战实例:
信息发布软件AIWROK软件苹果IOS系统随机数[RJrxn1afZqW7yjf2NK]方法小结
AIWROK软件随机数[RJrxn1afZqW7yjf2NK]方法小结 📌GQGqcAlZv2随机字符📌WBJqf91s7J随机整数📌LtUqFOGkc6随机小数📌随机布尔值生成函数📌随机数组元素选择函数使用示例表 📌随机日期使用示例表使用示例表使用示例表📌随机UUID生成函数函数说明表使用示例表📌随机密码 / 验证码随机密码 / 验证码生成函数及使用说明[/backcolor]函数说明表[/backcolor]使用示例表[/back
信息发布软件AIWROK软件苹果系统里的事件[event]方法小结
AIWROK软件苹果系统里的事件[event]方法小结 方法 1:截屏开始方法 2:截屏暂停方法 3:截屏恢复实战示例:
信息发布软件AWIROK苹果系统屏幕类[screen]方法小结
AWIROK苹果系统屏幕类[screen]方法小结 方法 1:lockScreen(锁定屏幕缓存)方法 2:unLockScreen(解锁锁屏幕缓存)方法 3:isOpenShortcut(是否开启快照截屏)方法 4:getScreenWidth(获取屏幕宽度)方法 5:getScreenHeight(获取屏幕高度)方法 6:ocr(识别支持设定区域)方法 7:screenShot(截图缩放,记得调用 close 释放图像)方法 8:screenShotFull(全尺寸截图,记得调用 close 释放图像)实战实例子:单独 OCR
信息发布软件AIWROK软无任何苹果IOS系统配置[config]方法小结
AIWROK软无任何苹果IOS系统配置[config]方法小结 getConfig 获取配置📌setConfig设置配置实际示例:
信息发布软件AIWROK软件安卓日志窗口[logWindow]方法小结总汇集合
AIWROK软件安卓日志窗口[logWindow]方法小结总汇集合 clear 清理日志📌close关闭日志窗口📌setAlpha设置透明度📌setClickModel设置可点模式,就是无法穿透桌面📌setColor设置日志字体颜色📌setDrag设置为手动拖拽模式setHeight设置高度📌setNoClickModel设置为不可点,穿透桌面📌setPosition设置位置📌setSize设置日志字体大小setTitle设置标题📌setWidth 设置
信息发布软件AIWROK安卓类日志类[print]方法小结总汇集合
AIWROK安卓类日志类方法小结总汇集合 print.log:输出调试 / 日志信息2. print.err:输出错误信息3. print.time:启动计时4. print.timeEnd:结束计时并返回时长5. print.warn:输出警告信息完整的示例:
信息发布软件AIWROK软件苹果IOS快捷指令代理服务[shortAgent]方法小结
AIWROK软件苹果IOS快捷指令代理服务[shortAgent]方法小结 openApp启动app📌appopenUrl打开网址或者Scheme📌openSelf自启动📌screenShot代理截屏📌getTopApp 获取顶端app(I0S18+)特别示例:
信息发布软件AIWROK系统安卓找字OCR___方法小结总汇集合
AIWROK系统安卓找字OCR___方法小结总汇集合 findIncludeText查询包含文字🔍🔢findIncludeTexts查询包含文字多目标🔍🔢findSimilarText模糊查询🔍🔢findText查询文字🔍🔢getAllDetect 获取所有目标🔍🔢getAllString 获取所有字符串🔍🔢getJson 获取json对象🔍🔢getJsonString 获取json字符串🔍🔢MLKitOcr文字
信息发布软件AIWROK软件toast_显示方法小结
AIWROK软件toast_显示方法小结 toast.setAlpha___设置透明度toast.setPoint___设置位置toast.setSize___设置字号toast.setTextColor___设置文字颜色toast.showLong___显示长吐司toast.show___显示吐司特别案例:示例二:示例三倒计时到指定时间并显示剩余时间(红色文字):
信息发布软件AIWROK软件苹果系统方法快捷指令[shortcut]方法小结
AIWROK软件苹果系统方法快捷指令[shortcut]方法小结 openApp启动app(需要前台运行)📌openUrl打开网页(需要前台运行)📌runShortcut打开快捷指令(需要前台运行)
信息发布软件AIWROK软件苹果IOS矩形类[rect]方法小结
AIWROK软件苹果IOS矩形类[rect]方法小结 getLeft 获取左边界📌getRight获取右边界📌getTop获取上边界📌getBottom 获取下边界📌getWidth 获取宽度📌getHeight 获取高度📌getCenterX 获取中心X坐标📌getCenterY 获取中心Y坐标📌inRect 判断点是否在矩形内📌set设置矩形的边界📌toString输出字符串📌getRandX生成随机X坐标📌getRandY生成随
信息发布软件AIWROK软件IOS系统里脚本项目[project]方法小结
AIWROK软件IOS系统里脚本项目方法小结 📌getCodePath 获取代码完整目录📌getPluginsPath 获取插件完整目录📌getResourcesPath 获取资源完整目录📌getCard 获取卡密📌getVersion 获取脚本版本调用示例代码:
信息发布软件IOS功能苹果AIWROK软件剪贴板类[clipboard]方法小结
IOS功能苹果AIWROK软件剪贴板类[clipboard]方法小结 copyToClipboard 复制到剪贴板📌copyToClipboardPIP复制到剪贴板📌readFromClipboard 从剪贴板读取示例方法实用:
信息发布软件AIWROK软件IOS苹果系统检测目标类[Detect]方法方法小结
AIWROK软件IOS苹果系统检测目标类[Detect]方法方法小结 📌score 获取检测分数📌getRect 获取检测区域📌clickRandom随机点击📌click点击示例演示:
信息发布软件AIWROK苹果IOS系统里的打印[print]方法小结
AIWROK苹果IOS系统里的打印方法小结 📌now返回本次脚本运行所有日志📌last 返回上次脚本运行所有日志📌showPip 显示画中画,必须前台📌hidePip 隐藏画中画,必须前台log日志📌log日志📌warn警告err 错误📌debug 调试简写printl示例方法演示:
信息发布软件AIWROK软件超多功能越全HID小结方法大放送
AIWROK软件超多功能越全HID小结方法大放送 ⌨️📌back:back 键⌨️📌backspace 键盘back删除键⌨️📌click:点击坐标⌨️📌clickPercent:点击百分比坐标⌨️📌clicks:连续点击⌨️📌clicksV2:连续点击 v2(可设置按下时长)⌨️📌connetBLE:连接蓝牙 HID(必须先完成配对)⌨
信息发布软件AIWROK软件苹果找图YoloV5目标检测[YoloV5]方法小结
AIWROK软件苹果找图YoloV5目标检测[YoloV5]方法小结 📌detectPercent预测📌loadModel 加载模型📌close释放模型
信息发布软件&#128241;⌨️最全的AIWROK软件安卓 HID方法集合小结A
信息发布软件示例苹果IOS系统简单展示一下H5界面AIWORK WebView 示例
示例苹果IOS系统简单展示一下H5界面AIWORK WebView 示例
信息发布软件用AIWROK软件IOS苹果系统创建一个黄色主题风格的 WebView 示例H5
用AIWROK软件IOS苹果系统创建一个黄色主题风格的 WebView 示例H5printl('//🍎交流QQ群711841924');// 创建一个黄色主题风格的 WebView 示例function createYellowThemedWebViewExample() { // 创建 WebView 实例 var web = new WebView(); // 显示界面 web.show(); // 加载黄色主题风格的 HTML 内容 web.loadHtml(`<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UT
信息发布软件苹果创建一个蓝色主题风格的 WebView 示例H5
苹果创建一个蓝色主题风格的 WebView 示例H5 演示了如何创建和操作 WebView 控件。代码中使用了注释的方式避免了实际的 URL 加载和界面关闭,以确保安全性和功能性。以下是代码的详细说明: function createYellowThemedWebViewExample() {...}:定义了一个名为 createYellowThemedWebViewExample 的函数,用于创建一个带有黄色主题风格的 WebView 示例。var web = new WebView();:创建了一个新的 WebView 实例。web.show()
信息发布软件AIWROK软件苹果IOS控件[WebView]方法小结
AIWROK软件苹果IOS控件[WebView]方法小结 📌show显示界面📌loadFile 加载本地文件📌loadHtml 加载 HTML内容📌dismiss关闭界面📌loadUrl加载网页URL完整演示例子:
信息发布软件AIWROK苹果部分功能UI-水平容器[Horizontal]方法小结
AIWROK苹果部分功能UI-水平容器[Horizontal]方法小结 📌addView添加子控件📌removeView移除视图📌clearAllViews清空所有视图📌getViewCount 获取视图数量📌setSpacing设置控件间距📌setBackgroundColor设置背景颜色📌setAlignment 设置对齐方式示例子 1 风格:示例风格 2:
信息发布软件AIWROK软件苹果IOS里的UI-输入框类[Input]方法小结
AIWROK软件苹果IOS里的UI-输入框类方法小结 📌setText 设置输入框文本📌getText 获取输入框文本 📌setlD设置控件ID📌setDefultText 设置默认值📌setTextColor设置文本颜色📌setFontSize设置字体大小📌setBackgroundColor 设置背景颜色📌setWidth设置输入框宽度📌setHeight 设置输入框高度📌setPlaceholder 设置占位符文本📌setTextAlignment 设
信息发布软件AIWROK软件苹果IOS系统Ul-空白站位[Space]方法小结
AIWROK软件苹果IOS系统Ul-空白站位[Space]方法小结 📌setHeight设置高度📌setWidth设置宽度📌setBackgroundColor 设置背景颜色完整示例:
信息发布软件AIWROK软件苹果IOS系统里UI-界面视图[IOSView]方法小结
苹果IOS系统里UI-界面视图方法小结 📌show显示界面📌dismiss关闭📌UIaddView添加📌getView获取view视图📌setBackgroundColor 设置背景颜色完整示例:
信息发布软件&#128296;UI-复选框类[CheckBox]方法小结
🔨UI-复选框类[CheckBox]方法小结📌setText 设置复选框标题📌getText 获取复选框标题📌setID设置控件ID📌setDefultSelect 设置默认值📌select选中复选框📌deselect取消选中复选框📌isSelect获取选中状态📌setColor设置复选框颜色 📌setWidth 设置控件宽度📌setHeight 设置控件高度📌onClick 按钮点击事件示例完整例子:
信息发布软件AIWROK软件IOS系统里的UI-标签类[Label]方法小结
AIWROK软件IOS系统里的UI-标签类[Label]方法小结 📌setText设置标签文本📌setTextColor 设置文本颜色📌setBackgroundColor设置背景颜色📌setFontSize设置字体大小📌setWidth 设置标签宽度📌setHeight设置标签高度📌setTextAlignment设置文本对齐方式完整示例方法例子:
信息发布软件AIWROK软件IOS苹果Ul-垂直容器[Vertical]方法小结
AIWROK软件IOS苹果Ul-垂直容器[Vertical]方法小结//方法小结,交流QQ群711841924//第一个方法:addView添加子控件var label = new Label();label.setText("Hello World");//第二个方法:removeView移除视图var v = new Vertical();v.removeView(0); // 移除第一个子控件//第三个方法:clearAllViews清空所有视图var v = new Vertical();v.clearAllViews(); // 清空所有控件//第四个方法:getViewCount 获取视图数量var v = new Ver
信息发布软件&#128296;AIWROK软件苹果系统UI-按钮[ Button]方法小结
🔨AIWROK软件苹果系统UI-按钮[ Button]方法小结//UI-按钮[ Button]方法小结,交流QQ群711841924// 方法一:setText 设置按钮标题var btn = new Button();btn.setText("点击我");// 方法二:getText 获取按钮标题var btn = new Button();string title = btn.getText();// 方法三:setColor设置按钮颜色var btn = new Button();btn.setColor(50, 100, 150); // 设置按钮颜色为RGB(50, 100, 150)// 方法四:setTextColor 设置
信息发布软件txt文件读写[txt]方法和UI-TAB界面视图[TabView]小结
txt文件读写[txt]方法和UI-TAB界面视图[TabView]小结//UI-TAB界面视图[TabView]方法小结,交流QQ群711841924 // 方法一:show显示界面 //申请一个UI var tab = new TabView(); tab.setTitels(['首页','关于']) vc.show(() => { //页面加载完后执行以下代码 printl("hello IOS") //创建一个水平容器 var h = new Horizontal() //创建一个按钮 var btn = new Butt
信息发布软件TomatoOCR文字识别[tomatoOCR]方法小结[OCR]
TomatoOCR文字识别[tomatoOCR]方法小结[OCR]
信息发布软件苹果系统OCR文字识别和OkHttp 网络请求管理
苹果系统OCR文字识别和OkHttp 网络请求管理
信息发布软件iosApp管理小结和苹果Ocr识别结果小结
iosApp管理小结和苹果Ocr识别结果小结
信息发布软件苹果IOS系统专用AIWROK软件HID键鼠模块小结
苹果IOS系统专用AIWROK软件HID键鼠模块小结
信息发布软件AIWROK软件IOS贝塞尔曲线
AIWROK软件IOS贝塞尔曲线 hid.moveToRealPoint(333, 1146);:这行代码指示设备(可能是模拟器或自动化测试工具)的hid(Human Interface Device)模块将操作点移动到屏幕上的坐标点(333, 1146)。这个点被定义为曲线的起点。sleep.second(1);:在移动到起点后,程序会暂停1秒钟。这是为了让设备有足够的时间到达起点位置,确保后续操作的准确性。接下来的几行代码定义了贝塞尔曲线的参数:startX 和 startY 定义了曲线的起点。en
信息发布软件AIWROK软件调用多任务随机倒计时函数
AIWROK软件调用多任务随机倒计时函数 代码逐行解释function 多任务随机倒计时(minSeconds, maxSeconds, 任务列表) {定义一个名为 多任务随机倒计时 的函数,该函数接受三个参数:minSeconds:倒计时的最小秒数。maxSeconds:倒计时的最大秒数。任务列表:一个包含多个任务对象的数组,每个任务对象都有一个任务名称和一个任务函数。 var randomInterval = Math.floor(Math.random() * (maxSeconds - minSeconds + 1) + mi
信息发布软件AIWROK软件对接豆包实例分享
AIWROK软件对接豆包实例分享 解释总结:创建一个新的 okHttp 对象实例:var http = new okHttp();创建了一个新的 okHttp 对象实例,并将其赋值给变量 http。okHttp 是一个用于发送 HTTP 请求的库。设置 HTTP 请求头:var aa = uiText.findByID("gd").getText();通过 uiText.findByID 方法找到 ID 为 “gd” 的控件,并获取其文本内容,赋值给变量 aa。uiText.findByID 是一个用于在用户界面上查找特定 ID 的控件的方法,getText
信息发布软件屏幕操作自动化随机点击与滑动函数示例
x和y是百分比形式的屏幕坐标,用于指定点击的大致位置。x范围和y范围定义了在指定坐标点附近点击的随机范围。function 随机位置点击(x, y, x范围, y范围) {定义了一个名为随机位置点击的函数,该函数接受四个参数:x、y、x范围、y范围。 // 将百分比坐标转成真实坐标 var x1 = screen.percentToWidth(x); var y1 = screen.percentToHeight(y);这里将百分比形式的x和y坐标转换为实际屏幕上的像素坐标。screen.percentT
信息发布软件aiwrok软件如何获取getRealPointRGB 获取真实坐标RGB?
getRealPointRGB 获取真实坐标RGB,为什么叫真实坐标 RGB?// 截屏 var img = screen.screenShotFull(); // 定义目标 RGB 值(假设目标图标的 RGB 值为 [255, 0, 0]) var targetRgb = [255, 0, 0]; // 遍历屏幕某区域(例如 [100, 100] 到 [300, 300]),查找目标 RGB 值 var startX = 100; var startY = 100; var endX = 300; var endY = 300; for (var x = startX; x <= endX; x++) { for (var y = start
信息发布软件AIWROK软件京东广告后台意图跳转方法
// 导入包 importClass(Packages.android.content.Intent); importClass(Packages.android.net.Uri); importClass(Packages.android.content.ActivityNotFoundException); importClass(Packages.android.widget.Toast); importClass(Packages.android.os.Handler); importClass(Packages.android.os.Looper); // 设置京东用户页面的URL var userId = "京东用户ID"; // 请替换为实际用户ID var url = "openapp.jdmobile:
信息发布软件AIWROK软件意图跳转支付宝的用户ID打开支付宝用户页面
AIWROK软件意图跳转支付宝的用户ID打开支付宝用户页面importClass(Packages.android.content.Intent); importClass(Packages.android.net.Uri); importClass(Packages.android.content.ActivityNotFoundException); importClass(Packages.android.widget.Toast); importClass(Packages.android.os.Handler); importClass(Packages.android.os.Looper); // 设置支付宝用户页面的URL var userId = "支付宝用户ID"; // 请替
信息发布软件AIWROK软件的对像怎么打印出来呢?
AIWROK软件的对像怎么打印出来呢?对像怎么打印出来呢?// 官方QQ群 711841924 var 手机 = { 手机品牌: "小米", 手机型号: "小米15", 手机颜色: "黑色", 手机产地: "广东" }; // 获取当前时间 var currentTime = new Date().toLocaleTimeString('zh-CN', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' }); // 自定义打印格式 printl("[" + currentTime + "] #10 【Nativ
信息发布软件AIWROK软件QQ特殊意图跳转
AIWROK软件QQ特殊意图跳转 这段代码的功能是尝试通过安卓设备上的QQ应用展示指定QQ用户的个人资料卡片。如果设备上没有安装QQ应用,则会提示用户并转而通过浏览器打开该用户的QQ空间网页。以下是代码的逐行说明: // 导入包:这只是对接下来几行导入安卓类库的一个注释说明。importClass(Packages.android.content.Intent);:导入安卓Intent类,用于在不同组件之间进行交互,比如从一个应用跳转到另一个应用。importClass(Pack
信息发布软件微信广告意图跳转
微信广告意图跳转// AWIROK软件官方群号711841924// 导入包importClass(Packages.android.content.Intent);importClass(Packages.android.net.Uri);importClass(Packages.android.content.ActivityNotFoundException);importClass(Packages.android.widget.Toast);importClass(Packages.android.os.Handler);importClass(Packages.android.os.Looper);// 设置微信用户页面的URLvar userId = "微信用户ID"; // 请替换为实际用户IDva
信息发布软件AIWROK软件微博意图跳转代码分享
AIWROK软件微博意图跳转代码分享 这段代码的主要功能是尝试在安卓设备上通过微博应用的URL Scheme跳转到指定微博用户的个人页面。如果设备上没有安装微博应用,则会提示用户并尝试通过网页链接打开该用户的微博个人页面。具体解释如下:导入包:首先,代码通过importClass方法导入了一些安卓开发中常用的类。这些类的功能包括:Intent:用于在不同组件之间进行交互,比如启动活动、发送广播等。Uri:表示统一资源标识符,通常
信息发布软件AIWROK软件无障碍获取当前activity地址
AIWROK软件无障碍获取当前activity地址无障碍获取当前activity地址:getCurrentActivity() 是一个方法,其作用是无障礙获取当前活动地址。以下是对其用法的详细分析:方法名称名称:getCurrentActivity()解释:get:表示这是一个获取数据的方法。CurrentActivity:表示获取当前活动(Activity)的地址或其他相关信息。作用:这个方法的作用是获取当前活动的地址,且不会出现障碍(例如无需额外传参或依赖其他复杂逻辑)。返回值返
信息发布软件loadDex 加载插件和TomatoOCR实例演示
说明:可以使用安卓studio 开发出apk,jar,或者dex使用此方法加载模块,注意:插件直接放到插件文件夹中然后上传到手机英文方法: loadDex(plugin),加载插件到系统参数:plugin:插件名称例如导入的插件为 p1.dex,则参数名就填写 loadPlugin(‘p1.dex’)案例://导入dex模块 rhino.loadDex('p1.dex') //导入apk模块 rhino.loadDex('demo.apk')importClass 导入插件中的类方法说明:通过这个方法可以导入插件里编写好的类英文方法:imp
信息发布软件AIWROK软件根据文本和类名查找并点击第一个Facebook节点
根据文本和类名查找并点击第一个Facebook节点展示了如何根据不同的条件使用auto.nodeSearch来查找和点击节点。示例1:根据文本和类名查找并点击第一个Facebook节点// 查找所有文本为 "Facebook" 且类名为 "android.widget.TextView" 的节点 var nodes = auto.nodeSearch(3000).text("Facebook").className("android.widget.TextView"); // 获取找到的第一个节点 var node = nodes.getNode(0); // 点击该节点 node.click()
信息发布软件AIWROK软件字符串大小写转换 字符串大小写转换使用函数
字符串大小写转换 字符串大小写转换使用函数let originalString = "Hello, World!"; let mixedCaseString = originalString.toUpperCase().toLowerCase(); // 实际上是多余的,因为结果和原始字符串的小写形式相同 console.log(mixedCaseString); // 输出: hello, world! // 条件转换示例 function toggleCase(str) { return str === str.toUpperCase() ? str.toLowerCase() : str.toUpperCase(); }
信息发布软件苹果IOS中的HID文件接口文档
苹果IOS中的HID文件接口文档ios操作方法connet连接手机http://192.168.0.112:81/connetscreenshot截屏接口ios屏幕截屏可以指定截屏后的图像尺寸参数:width:宽度height:高度http://192.168.0.112:81/screenshot?width=720&height=1280&compress=100getScreenWidth获取屏幕宽度参数:http://192.168.0.112:81/getScreenWidth鼠标操作方法click点击屏幕真实坐标参数:x:横坐标y:纵坐标http://192.168.0.112:81/click?x=500&y=500
信息发布软件H5调用app和保存配置
本帖最后由 信息发布软件 于 2025-6-27 09:26 编辑 void runJs(function code)h5执行app JS脚本window.at.runJs(function (){ //这里写ATjs代码 printl("你好"); auto.home(); }.toString());void runJsFile(String file) H5运行APP JS文件window.at.runJsFile('主脚本.js');void callFunction(String funname,String arg) H5执行脚本方法window.at.callFun('main',"hello");String getRootPath() 获取项目根
信息发布软件AIWROK软件HID物理按键对应码和组合键用法
本帖最后由 信息发布软件 于 2025-6-26 06:21 编辑 hid.keyPress(0,keycode.A());//在光标后面输入aa//方法1hid.keyPress(0,keycode.Enter());//亮屏//方法2hid.keyPress(0,0x07);//唤醒屏亮屏hid.keyPress(0,0x66);//息屏,关屏HID 键码表功能键按键名称HID 码(十进制)HID 码(十六进制)ESC410x29F1580x3AF2590x3BF3600x3CF4610x3DF5620x3EF6630x3FF7640x40F8650x41F9660x42F10670x43F11680x44F12690x45Backspace420x2ATab430
信息发布软件AIWROK软件里IOS提前复制内容按组进行下标调用
AIWROK软件里IOS提前复制内容按组进行下标调用由于iOS系统采用的是单线程运行机制,这意味着它无法像多线程系统那样在后台同时处理多个任务。因此,在复制操作时,您无法在后台直接复制内容,而是需要通过弹出窗口来完成复制粘贴功能。这种操作方式虽然安全,但在一定程度上会影响操作效率。为了提升工作效率,您可以采用以下方法:提前复制内容:在需要频繁使用某些固定内容时,可以提前将这些内容复制到剪贴板,以便后续快速调用
信息发布软件AIWROK软件里IOS系统如何自动存储和读取配置UI输入框
AIWROK软件里IOS系统如何自动存储和读取配置UI输入框 这段代码是使用AiWork安卓自动化IDE编写的,主要功能是在iOS设备上创建一个包含输入框、单选框和复选框的视图,并实现这些控件的状态保存和值的获取。下面是对代码的详细说明: [*]var vc = new IOSView();:创建一个新的iOS视图对象vc,用于在iOS设备上显示控件。 [*]vc.show(() => { ... });:调用show方法显示视图,并在回调函数中添加控件和设置它们的行
信息发布软件AIWROK软件IOS如何使用webview 实现 h5界面ui加载html代码
AIWROK软件IOS如何使用webview 实现 h5界面ui加载html代码var web = new WebView()web.show();web.loadHtml(`<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>WKWebView JS to Swift</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, sans
信息发布软件AWIROK软件编辑器自定义右键菜单
function setupEditorActions(editor) { // 定义 addAction 函数 function addAction(label, order, textToInsert) { // 添加自定义右键菜单项的逻辑 } // 定义 UIControl 函数 function UIControl(label, order) { // 添加自定义右键菜单项的逻辑 } // 调用 UIControl 函数以添加 "控件调用" 右键菜单项 UIControl('控件调用', 0); // 调用 addAction 函数以添加 "if..."
信息发布软件用AIWROK软件写入表格并读取WROK文件方法
四种不同的方法来处理二维数组数据,并将其保存为CSV或DOCX格式的文件,或者从DOCX文件中读取内容。以下是每种方法的详细说明:第一个方法:原始二维数组,按列保存// 官方交流群711841924 // 第一个方法,原始二维数组,按列保存 var 表格数据 = [ ["1", "110", "130"], // 第一行数据 ["其他数据1", "其他数据2", "其他数据3"], // 第二行数据 ]; // 将二维数组转换为 CSV 格式字符串 var csv数据 = 表格数据
信息发布软件AIWROK软件IOS系统里如何实现ocr识别屏幕文字
AIWROK软件IOS系统里如何实现ocr识别屏幕文字最简单的ocr识别//截图 var img = screen.screenShotFull(); //ocr识别 var ocrres=img.ocr(0, 0, 1, 1) printl(ocrres) //释放内存 否则会内存泄漏 img.close(); 先对图像进行处理后再ocr识别 解决部分文字不准问题//截屏并转成mat格式 var img = screen.screenShotFull(); var mat = img.getMat(); //二值化 opencv.threshold(mat,50,200) //printl(mat) //转成im

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2025-9-16 15:59 , Processed in 0.191898 second(s), 59 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表